【发布时间】:2020-02-09 18:28:18
【问题描述】:
数据库是 postgres 9.4 在我的表中,我使用的是 JSONField
class Item(models.Model):
item = models.CharField(max_length=200)
data = JSONField()
3 条记录的示例数据 JSONField:
{"color": ["yellow", "blue", "red"], "size": ["S", "L"], "material": "cotton"}
{"color": ["white", "blue", "gray"], "size": ["XL", "L"], "material": "cotton"}
{"color": ["yellow", "gray", "red"], "size": ["L", "XL"], "material": "cotton"}
我的目标是创建一个列表,其中包含每种出现的颜色和大小的计数:
颜色: 黄色 2 蓝色 2 红色 2 灰色 2 白色 1
尺寸: 大号 3 加大码 2 S 1
这可能吗?就性能而言,最佳解决方案是什么。
到目前为止,我设法生成了一个包含所有出现列表的列表:
Item.objects.values_list('data__color').distinct().annotate(num=Count('data_color'))
颜色:
["yellow", "blue", "red"], 1
["white", "blue", "gray"], 1
["yellow", "gray", "red"], 1
【问题讨论】:
-
如果您使用
__len查找会怎样? docs.djangoproject.com/en/2.2/ref/contrib/postgres/fields/#len
标签: sql django postgresql