【发布时间】:2020-08-01 16:21:09
【问题描述】:
我有一个由
定义的模型from django.contrib.postgres.fields import ArrayField
class Model(models.Model):
name = models.CharField(max_length=255)
tags = ArrayField(models.CharField(max_length=255))
我想要一种方法来有效地获取标签 ArrayField 中每个不同元素的计数。我把这段代码放在一起做尝试。
Model.objects.annotate(elems=Func(F('tags'), function='unnest')).values_list('elems', flat=True).annotate(c=Count('elems'))
但它返回一个错误
...aggregate function calls cannot contain set-returning function calls
LINE 1: ...COUNT(unnest("...
^
HINT: You might be able to move the set-returning function into a LATERAL FROM item.
关于如何使这个查询起作用的任何想法?
编辑
这是 Django 的 ORM 生成的 SQL。
SELECT unnest("model"."tags") AS "elems", COUNT(unnest("model"."tags")) AS "c" FROM "model" GROUP BY unnest("model"."tags");
【问题讨论】:
-
能否请您发布一个完整的数据库查询?
-
添加了一个编辑。谢谢
标签: django