• python之路_django ORM相关补充


    一、非django项目文件执行ORM

      在不启动django项目的情况下,我们是否可以进行ORM操作呢?当然不行。因为所有的ORM操作都必须是要连接数据库的。但是我们有这样的一个需求:想在一个文件中执行ORM。该如何实现呢?参考如下实例:

    import os
    import sys
    import django
    sys.path.append(r'C:UsersAdministratorPycharmProjectss6day109')    #将当前djang项目路径添加到环境
    
    os.chdir(r'C:UsersAdministratorPycharmProjectss6day109')
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "s6day109.settings")
    django.setup()                                                         #启动django
    
    from crm import models
    
    v = models.Customer.objects.all()
    print(v)

    二、django中ORM的Q介绍

      Q方法主要为了解决复杂条件查询的情况。

    方式一:

    Q(nid__gt=10)                                            #nid>10
    Q(nid=8) | Q(nid__gt=10)                                 #nid=8或者nid>10
    Q(nid=8) | Q(nid__gt=10) &Q(caption="root")              #nid=8或者nid>10且caption="root"
    
    # 应用示例:(非Q条件放在Q条件后面,为且的关系。如status=2)
    customer_list = models.Customer.objects.filter(Q(recv_date__lt=)|Q(last_consult_date__lt=no_follow),status=2)

    方式二:

    q1=Q()
    q1.connector = "OR"
    q1.children.append(('id',1))
    q1.children.append(('id__gt',3))
    #q1中要求id=1或者id>3,例:models.UserInfo.objects.filter(q1)
    
    q2=Q()
    q2.connector = "OR"
    q2.children.append(('title__contain',""))
    q2.children.append(('nid',2))
    #q2中要求title字段包含“高”或者nid=2,例:models.UserInfo.objects.filter(q2)
    
    con=Q()
    con.add(q1,"AND")
    con.add(q2,"AND")
    #con要求q1和q2的结果为且的关系,例:models.UserInfo.objects.filter(con)
  • 相关阅读:
    Python中的字典
    Python中的元组
    Python中常见的公共方法
    Python中的列表
    Python的循环语句
    Python的流程控制
    Kubernetes-kubectl命令出现错误【The connection to the server localhost:8080 was refused
    nyoj 77-开灯问题 (倍数遍历)
    nyoj 76-超级台阶 (递推)
    nyoj 75-日期计算 (闰年与平年的判断)
  • 原文地址:https://www.cnblogs.com/seven-007/p/8534598.html
Copyright © 2020-2023  润新知