python之路_django ORM相關補充

1、非django項目文件執行ORM數據庫

  在不啓動django項目的狀況下,咱們是否能夠進行ORM操做呢?固然不行。由於全部的ORM操做都必須是要鏈接數據庫的。可是咱們有這樣的一個需求:想在一個文件中執行ORM。該如何實現呢?參考以下實例:django

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)

2、django中ORM的Q介紹app

  Q方法主要爲了解決複雜條件查詢的狀況。spa

方式一:code

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)

方式二:blog

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)
相關文章
相關標籤/搜索