gpt4 book ai didi

python - Django .aggregate() 在 .annotate() 上

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:37 26 4
gpt4 key购买 nike

是否可以聚合查询集的注释?

模型:

class Article(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()

class State(models.Model):
article = Models.ForeignKey(Article)
date = DateField()
views = IntegerField()
downloads = IntegerField()

我正在尝试执行以下操作:

articles = metrics_models.Article.objects.filter(
state__date__month=month,
state__date__year=year
).annotate(
views=Min('state__views'),
downloads=Min('state__downloads')
).aggregate(
views=Sum('views'),
downloads=Sum('downloads')
)

错误:

Exception Type: DatabaseError
Exception Value:
column "downloads" does not exist
LINE 1: SELECT SUM(downloads), SUM(views) FROM (SELECT "metrics_arti...

当运行它时,我得到一个数据库错误,因为 django 试图在“ View ”和“下载”数据库列上进行聚合,而不是在注释上进行聚合。

有没有其他方法可以对 QuerySet 注释进行这种聚合?

最佳答案

我认为 medmunds 是对的,您不能为注释和聚合别名重复使用相同的名称。这就是你想要做的,我认为:

articles = metrics_models.Article.objects.filter(
state__date__month=month,
state__date__year=year
).annotate(
min_views=Min('state__views'),
min_downloads=Min('state__downloads')
).aggregate(
sum_min_views=Sum('min_views'),
sum_min_downloads=Sum('min_downloads')
)

关于python - Django .aggregate() 在 .annotate() 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30984711/

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