python之路_django ORM相關補充
阿新 • • 發佈:2018-03-09
col sta -s nec models 這樣的 end list filter
一、非django項目文件執行ORM
在不啟動django項目的情況下,我們是否可以進行ORM操作呢?當然不行。因為所有的ORM操作都必須是要連接數據庫的。但是我們有這樣的一個需求:想在一個文件中執行ORM。該如何實現呢?參考如下實例:
import os import sys import django sys.path.append(r‘C:\Users\Administrator\PycharmProjects\s6day109‘) #將當前djang項目路徑添加到環境 os.chdir(r‘C:\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相關補充