簡體   English   中英

在Django過濾器語句中__in和等號(=)之間有什么區別?

[英]In Django filter statement what's the difference between __in and equal sign (=)?

這個問題之后 ,我想知道寫作是否有任何不同

.filter(league_pk__in=[1,2,3])

.filter(league=[1,2,3])

我已經試過了兩個,他們似乎在我的代碼中返回相同的結果,但在文檔中沒有任何地方說它們是相同的( __exact )。

我可以安全地假設這兩種形式是平等的嗎? 它在哪里記錄?

如果不知道模型上的關系是什么,我們就不能肯定地說。 我能給你的是一種檢查查詢的方法,它會告訴你它們是否相同:

print your_qs.filter(league_pk__in=[1,2,3]).query
print your_qs.filter(league=[1,2,3]).query

並查看生成的sql以查看db級別的實際情況。

我認為大致是你的第一個查詢,它正在做:

SELECT * FROM model WHERE model.league_id IN (SELECT id FROM league WHERE id IN(1, 2, 3))

對於第二個查詢,它正在執行:

SELECT * FROM model WHERE model.league_id IN (1, 2, 3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM