Django queryset按Postgres JSONField中的值计数分组

Django queryset按Postgres JSONField中的值计数分组,django,postgresql,Django,Postgresql,我的模型: from django.contrib.postgres.fields import JSONField class Image(models.Model): tags = JSONField(null=False, blank=True, default={}) 标记字段值可以为空,或类似于: [ {"tag": "xxx"}, {"tag": "yyy"}, {"tag": "zzz"} ] { "0": "345", "1": "1

我的模型:

from django.contrib.postgres.fields import JSONField

class Image(models.Model):
    tags = JSONField(null=False, blank=True, default={})
标记字段值可以为空,或类似于:

[
   {"tag": "xxx"}, 
   {"tag": "yyy"},
   {"tag": "zzz"}
]
{
   "0": "345",
   "1": "1223",
   "2": "220",
   ...
   "N": "23"
}
数字或数字可能不同(从0到N)

我需要做一个查询,统计图像分组的标签数量。比如:

[
   {"tag": "xxx"}, 
   {"tag": "yyy"},
   {"tag": "zzz"}
]
{
   "0": "345",
   "1": "1223",
   "2": "220",
   ...
   "N": "23"
}
其中,键是标记数,值是包含此标记数的图像对象的计数

我该怎么做?谢谢你的帮助

更新

我修改了代码:现在我不使用JsonField,而是使用一个专用模型:

class ImageTag(models.Model):
    image = models.ForeignKey(Image)
    tag = models.CharField()

问题是一样的:)

我认为使用高级ORMAPI是不可能的。但是,您应该能够使用
extra()
或原始查询集和来自的想法构建一些东西。此外,您可能还应该阅读。最值得注意的是,“PostgreSQL支持json,但您不应该在大部分工作中使用它[…],因为这会使查询和操作变得更困难。”我公开了存储在这个json字段中的信息子集;感谢您一直以来的有趣阅读:)我认为使用高级ORMAPI是不可能的。但是,您应该能够使用
extra()
或原始查询集和来自的想法构建一些东西。此外,您可能还应该阅读。最值得注意的是,“PostgreSQL支持json,但您不应该在大部分工作中使用它[…],因为这会使查询和操作变得更困难。”我公开了存储在这个json字段中的信息子集;感谢您一直以来的有趣阅读:)