django之ORM查詢操作(二)

2021-08-28 12:01:30 字數 1855 閱讀 9486

過濾器:基於所給的引數限制查詢的結果

count():返回當前查詢的總條數

aggregate():聚合

exists():判斷查詢集中是否有資料,如果有則返回true,沒有則返回false

2.快取:查詢集的結果被存下來之後,再次查詢相同資料時會使用之前快取的資料

# user列表資訊檢視

def userlist(request):

# 列表下標限制查詢集 :查詢第1,2項

userinfos = userinfo.user.all()[0:2]

# 構造上下文

context =

return render(request, 'user/userlist.html', context)

查詢語法:模型屬性_條件運算子=值

查詢實現

from datetime import date

bookinfos = bookinfo.books.filter(pub_date__gt=date(1990,1,1))

語法:

from django.db.models import f

f('屬性名')

f物件查詢需求

bookinfos = bookinfo.books.filter(readcount__gt=f('commentcount'))
bookinfos = bookinfo.books.filter(readcount__gt=f('commentcount')*2)

q物件語法:

from django.db.models import q

q(模型屬性1__條件運算子=值) | q(模型屬性2__條件運算子=值)

q物件查詢需求

被定義在django.db.models

4.1 統計總的閱讀量

from django.db.models import sum

def booklist(request):

# 查詢編號不等於3的書籍

bookinfos = bookinfo.books.filter(~q(id=3))

# 統計總的閱讀量

readcount = bookinfo.books.aggregate(sum('readcount'))

# 構造上下文

context =

return render(request, 'book/booklist.html', context)

注意上下文本典取總閱讀量時的key的書寫規則

5.1基礎關聯查詢

2.查詢編號為1的英雄出自的書籍

5.2內連線查詢

語法如下 :

關聯模型類名小寫__屬性名__運算子=值

2.查詢書籍中人物的描述包含"紅"的書籍

5.3自關聯查詢

# 地區列表資訊

class areainfo(models.model):

name = models.charfield(max_length=30) #名稱

parent = models.foreignkey('self',null=true,blank=true) #關係

# 元類資訊 :修改表名

class meta:

db_table = 'areainfo'

Django之ORM正反向查詢

在orm查詢中,一般分為正向查詢和反向查詢。至於什麼是正向查詢和反向查詢,還要從表關係說起。舉個簡單的例子,就拿圖書和出版社來說,一般乙個圖書只有乙個出版社,但是乙個圖書一般有多個圖書,外來鍵關係一般建立在多的一側,也就是說,外來鍵關係是建立在圖書的表模型中的。而正向查詢就是從多的一側出發,即圖書表...

django之orm多表操作1

三種關係 一對一,一對多,多對多 一對一 xx models.onetoonefield to 表名 to field 欄位名 on delete models.cascade 刪除時的一些級聯效果,to field可以不寫,預設是關聯到另一張表的主鍵,on delete在1.x版本的django中...

django環境下ORM操作之單錶查詢雙下劃線

import os 如果忘記main是怎麼寫的,可以複製manage.py檔案的開頭,然後再匯入django if name main os.environ.setdefault django settings module orm about.settings import django djan...