Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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
Python 如何在django中查询筛选器而不出现多次_Python_Django - Fatal编程技术网

Python 如何在django中查询筛选器而不出现多次

Python 如何在django中查询筛选器而不出现多次,python,django,Python,Django,我有两种型号: ParentModel:“just”坐在那里 ChildModel:具有ParentModel的外键 ParentModel.objects.filter(childmodel\uu in=childmodel.objects.all())提供ParentModel的多次出现 如何查询至少有一个引用它的子模型的所有父模型?没有多次出现…你几乎把它做好了 ParentModel.objects.filter(childmodel__in=ChildModel.objects.all

我有两种型号:

ParentModel:“just”坐在那里

ChildModel:具有ParentModel的外键

ParentModel.objects.filter(childmodel\uu in=childmodel.objects.all())
提供ParentModel的多次出现


如何查询至少有一个引用它的子模型的所有父模型?没有多次出现…

你几乎把它做好了

ParentModel.objects.filter(childmodel__in=ChildModel.objects.all()).distinct()

你几乎把它做好了

ParentModel.objects.filter(childmodel__in=ChildModel.objects.all()).distinct()

如果
childmodel
对象的数量很大,您可能希望避免在=childmodel.objects.all()中使用
childmodel\uu。这将使用列表中枚举的所有
ChildModel
id生成SQL,可能会创建一个巨大的SQL查询

如果您可以使用支持,您可以执行以下操作:

ParentModel.objects.annotate(num_children=Count('child')).filter(num_children__gte=1)

如果
childmodel
对象的数量很大,您可能希望避免在=childmodel.objects.all()中使用
childmodel\uuu。这将使用列表中枚举的所有
ChildModel
id生成SQL,可能会创建一个巨大的SQL查询

如果您可以使用支持,您可以执行以下操作:

ParentModel.objects.annotate(num_children=Count('child')).filter(num_children__gte=1)
这将生成更好的SQL