溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Django中如何使用filter的pk進(jìn)行多值查詢操作

發(fā)布時間:2020-07-16 16:07:38 來源:億速云 閱讀:220 作者:小豬 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了Django中如何使用filter的pk進(jìn)行多值查詢操作,內(nèi)容簡而易懂,下面讓小編帶大家一起學(xué)習(xí)一下吧。

由于想要做收藏夾的功能,所以希望能夠一次性查詢出所有id的對象,查看文檔,找到了如下方法

pk是primary key的縮寫,顧名思義pk_in就是primary key在某一個范圍內(nèi),具體操作(以自帶的User為例):

User.objects.filter(pk__in=[1,2,3])

這樣就可以去除id為1,2,3的User的對象了,很方便

注意是兩個下劃線

另外,還要pk__gt和pl_lt,都用于篩選范圍的

User.objects.filter(pk__gt=10)

意味著將要得到pk(一般也就是說id)大于10的對象(greater)

User.objects.filter(pk__lt=10)

意味著將要得到pk小于10的對象

補(bǔ)充知識:Django 比較同一個model中的兩個字段,進(jìn)行條件過濾

django orm中怎么樣比較同一個模型中的兩個字段來過濾記錄呢?

例如一個合同字段,結(jié)束日期和終止日期的比較我們用sql很容易實現(xiàn)。

select *from contracts where

contract_stop_time<end_time

這里要是用db模塊中的F 庫才行 F object

from django.db.models import F
from contracts.models import Contracts
contracts = Contracts.objects.filter(contract_stop_time__lt=F('end_time'))

如果直接寫成

Contracts.objects.filter(contract_stop_time__lt=end_time)

或者

Contracts.objects.filter("contract_stop_time"<"end_time")

都是不行的。

以上就是關(guān)于Django中如何使用filter的pk進(jìn)行多值查詢操作的內(nèi)容,如果你們有學(xué)習(xí)到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI