【发布时间】:2019-07-30 05:03:53
【问题描述】:
使用 Django,我有一个 JSONField 类型的字段。我想对 json 中的嵌套键/值进行不同的计数。使用普通字段,您可以执行以下操作
model.objects.values('field_name')\
.annotate(total=Count('field_name')).order_by('-total')
这不适用于 JSONField。
示例模型
class Pet(models.Model):
data = JSONField()
数据示例
{
'name':'sparky',
'animal':'dog',
'diet':{
'breakfast':'biscuits',
'dinner':'meat',
}
}
尝试
Pet.objects.values('data__diet__dinner')\
.annotate(total=Count('data__diet__dinner')).order_by('-total')
例外
TypeError: unhashable type: 'list'
执行此操作的正确方法是什么?
【问题讨论】:
-
你有没有看到这个问题:stackoverflow.com/questions/34325096/…?
标签: django postgresql django-annotate django-jsonfield