[英]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.