小编Mau*_*MSL的帖子

Django .aggregate() on .annotate()

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

楷模:

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()
Run Code Online (Sandbox Code Playgroud)

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

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')
)
Run Code Online (Sandbox Code Playgroud)

错误:

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

运行此程序时,我收到 DatabaseError 因为 django 尝试在“视图”和“下载”数据库列上进行聚合,而不是在注释上进行聚合。

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

python django django-models

10
推荐指数
1
解决办法
6301
查看次数

标签 统计

django ×1

django-models ×1

python ×1