码迷,mamicode.com
首页 > 编程语言 > 详细

python之路_django ORM相关补充

时间:2018-03-09 16:43:54      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:实现   cts   post   dmi   day   cto   mod   cap   pat   

一、非django项目文件执行ORM

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

import os
import sys
import django
sys.path.append(rC:\Users\Administrator\PycharmProjects\s6day109)    #将当前djang项目路径添加到环境

os.chdir(rC:\Users\Administrator\PycharmProjects\s6day109)
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之路_django ORM相关补充

标签:实现   cts   post   dmi   day   cto   mod   cap   pat   

原文地址:https://www.cnblogs.com/seven-007/p/8534598.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!