QuerySet?API?
返回新?QuerySet?的方法
filter(**kwargs)
返回一個(gè)新的?QuerySet,其中包含與給定查找參數(shù)相匹配的對象。多個(gè)參數(shù)通過底層 SQL 語句中的?AND?連接。
exclude(**kwargs)
返回一個(gè)新的?QuerySet,其中包含與給定查找參數(shù)不匹配的對象。多個(gè)參數(shù)通過底層 SQL 語句中的?AND?連接,整個(gè)過程用?NOT()?括起來。
排序
order_by(*fields)
默認(rèn)情況下,QuerySet?返回的結(jié)果是按照模型?Meta?中的?ordering?選項(xiàng)給出的排序元組排序的。你可以通過使用?order_by?方法在每個(gè)?QuerySet?的基礎(chǔ)上覆蓋這一點(diǎn)。
舉例:Entry.objects.filter(pub_date__year=2005).order_by('-pub_date','headline')
上述結(jié)果將按?pub_date?降序排列,然后按?headline?升序排列。"-pub_date"?前面的負(fù)號表示降序。升序是隱含的。
可以通過在表達(dá)式上調(diào)用?asc()?或?esc(),按?查詢表達(dá)式?排序:
Entry.objects.order_by(Coalesce('summary','headline').desc())
asc()?和?esc()?有參數(shù)(nulls_first?和?nulls_last)來控制如何對空值進(jìn)行排序。
反向查詢
reverse()
使用?reverse()?方法來反向返回查詢集元素的順序。第二次調(diào)用?reverse()?會將順序恢復(fù)到正常方向。
要檢索一個(gè)查詢集中的“最后”五個(gè)項(xiàng)目,你可以這樣做:
my_queryset.reverse()[:5]
去重
distinct(*fields)
返回一個(gè)新的?QuerySet,在其 SQL 查詢中使用?SELECT?DISTINCT。這將消除查詢結(jié)果中的重復(fù)記錄。
比較函數(shù)
范圍字段支持標(biāo)準(zhǔn)查詢:lt、gt、lte?和?gte。這些并沒有特別大的幫助——它們先比較下界,然后在必要時(shí)才比較上界。這也是用于按范圍字段排序的策略。最好是使用特定的范圍比較運(yùn)算符。
gt : 大于? (舉例:Entry.objects.filter(id__gt=4)? ? ? ? ? ? ? ? ? ? ? ? ?SQL 等價(jià)于:SELECT...WHEREid>4;)
gte : 大于等于
lt : 小于
lte : 小于等于