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字段中的信息子集;感谢您一直以来的有趣阅读:)