Django过滤/排除对象列表

时间:2018-06-18 07:20:55

标签: django

我有一个模型Animal和动物对象列表

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 个答案:

答案 0 :(得分:0)

选项1.使用您的特定方案:

  • 将列表作为查询集检索: a1 = Animal.objects.filter(pk__in=[a1.pk, a2.pk, a3.pk])

  • 获取您的查询集: a2 = Animal.objects.filter(some__filters)

  • 获取查询集之间的区别: a1.difference(a2)

选项2。差异

此选项假定a1是一个查询集。