1. 程式人生 > >python之路_django ORM相關補充

python之路_django ORM相關補充

col sta -s nec models 這樣的 end list filter

一、非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相關補充