1. 程式人生 > 程式設計 >Django:使用filter的pk進行多值查詢操作

Django:使用filter的pk進行多值查詢操作

由於想要做收藏夾的功能,所以希望能夠一次性查詢出所有id的物件,檢視文件,找到了如下方法

pk是primary key的縮寫,顧名思義pk_in就是primary key在某一個範圍內,具體操作(以自帶的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的物件

補充知識:Django 比較同一個model中的兩個欄位,進行條件過濾

django orm中怎麼樣比較同一個模型中的兩個欄位來過濾記錄呢?

例如一個合同欄位,結束日期和終止日期的比較我們用sql很容易實現。

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")

都是不行的。

以上這篇Django:使用filter的pk進行多值查詢操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。