簡體   English   中英

我可以使用python列表過濾django模型嗎?

[英]Can I filter a django model with a python list?

假設我定義了一個模型對象“ Person”,其中有一個名為“ Name”的字段。 我有一個人名單:

l = ['Bob','Dave','Jane']

我想返回名字不在 l中定義的名稱列表中的所有Person記錄的列表。

最Python化的方法是什么?

編輯:經過深思熟慮,我真正想做的是拿出一個不在 Person表中的l的子列表。 有有效的方法嗎? 我可以想到幾種方法,但不確定效率如何。

這應該工作:

Person.objects.exclude(name__in=['Bob','Dave','Jane'])

重命名l以提高可讀性:

names = ['Bob','Dave','Jane']

Person.objects.[exclude][1](Name__[in][2]=names)

更新1:回答第二個問題(在您的“編輯”段落中):

present = Person.objects.values_list('Name', flat=True)
absent = set(names) - set(present)   
# or, if you prefer named functions to the set operator '-'
absent = set(names).difference(present) 

是的,差異的“右手邊”(但不包括“-”)接受任何迭代(我必須查一下以確認)。

暫無
暫無

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

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