Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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
Mysql django查询中的注释和聚合混合_Mysql_Django_Django Models_Django Orm - Fatal编程技术网

Mysql django查询中的注释和聚合混合

Mysql django查询中的注释和聚合混合,mysql,django,django-models,django-orm,Mysql,Django,Django Models,Django Orm,我有两个名为Image和Product的表 class Image(): product = Foreignkey(Product, related_name='image') #some more field e.g. image_name, slug, caption, etc. 一个产品可以有零个、一个或最多5个图像。 我想计算有X个图像的产品的数量 我尝试过天真的方法,但它只执行N个(#产品)+1个SQL查询 d = {0: 0, 1: 0, 2: 0, 3: 0,

我有两个名为
Image
Product
的表

class Image():
     product = Foreignkey(Product, related_name='image')
     #some more field e.g. image_name, slug, caption, etc.
一个产品可以有零个、一个或最多5个图像。 我想计算有X个图像的产品的数量

我尝试过天真的方法,但它只执行N个(#产品)+1个SQL查询

d = {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
for x in product.objects.all():
    d[x.image.count()] += 1
我想我们可以使用
select\u related
来做,但不确定如何做。 我试着用annotate,但没用。
Image.objects.annotation(x=Count('product'))

我对django的经验不太了解。我想知道我是否可以通过单个查询或更优化的方式来完成它。

这是一个使用sql查询的组。在django orm中,您可以从django文档中搜索“注释过滤”

Product.objects.annotate(num_images=Count('image')).filter(num_images=5)