Django根据对象列表筛选/排除
我有一个动物模型和动物物品清单Django根据对象列表筛选/排除,django,Django,我有一个动物模型和动物物品清单 A1 = [a1, a2, a3] 现在我正在进行Django查询 A2 = Animal.objects.filter(some__filters) 现在我想从A2中排除A1 A3 = A2.exclude(A1) // Wouldn't simply work. 我知道我必须这样做 A3 = A2.exclude(id__in=[a.id for a in A1]) 是否应该有一个较短的版本?选项1。使用您的特定场景: 以查询集的形式检索列表: a
A1 = [a1, a2, a3]
现在我正在进行Django查询
A2 = Animal.objects.filter(some__filters)
现在我想从A2中排除A1
A3 = A2.exclude(A1) // Wouldn't simply work.
我知道我必须这样做
A3 = A2.exclude(id__in=[a.id for a in A1])
是否应该有一个较短的版本?选项1。使用您的特定场景:
- 以查询集的形式检索列表:
a1=Animal.objects.filter(pk\uu in=[a1.pk,a2.pk,a3.pk])
- 获取您的查询集:
a2=Animal.objects.filter(一些过滤器)
- 获取查询集之间的差异:
a1.差异(a2)
- 获取a1和a2之间的差异:
()a1.差异(a2)
filter()
和exclude()
被转换为SQL查询。您的简单元素列表无法转换为SQL,因此您需要自己对ID列表进行转换。如果您有A1的查询集,可以使用difference。()