gpt4 book ai didi

mysql - django 查询中混合注释和聚合

转载 作者:行者123 更新时间:2023-11-29 21:35:37 26 4
gpt4 key购买 nike

我有两个名为ImageProduct 的表。

class Image():
product = Foreignkey(Product, related_name='image')
#some more field e.g. image_name, slug, caption, etc.

一件产品可以有零张、一张或最多 5 张图片。我想计算有 X 号的产品数量。图像。

我尝试了简单的方法,但它执行了 N(#products)+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_lated来做到这一点,但不知道如何去做。我尝试使用注释进行操作,但没有成功。Image.objects.annotate(x=Count('产品'))我对 django 没有太多经验。我想知道是否可以通过单个查询或更优化的方式来完成。

最佳答案

这是一个通过sql查询的分组。在 django orm 中,您可以从 django doc 中搜索“Filtering on comments”。

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

关于mysql - django 查询中混合注释和聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34940776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com