Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django根据对象列表筛选/排除_Django - Fatal编程技术网

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)

备选案文2。差别 此选项假定a1是查询集

  • 获取a1和a2之间的差异:
    a1.差异(a2)
    ()

据我所知,
filter()
exclude()
被转换为SQL查询。您的简单元素列表无法转换为SQL,因此您需要自己对ID列表进行转换。如果您有A1的查询集,可以使用difference。()