我的模型中有一个基于Postgres的JSONField。
class MyModel(models.Model):
data = JSONField(default=dict)
JSON示例如下:
{
'key1': 'val1',
'key2': 'val2'
}
我有多个模型对象,比方说~50。
我正在尝试仅查询key1
内的data
,并希望获得key1
的所有不同值的列表。
我该怎么做?请注意我使用的是Django 1.10。
答案 0 :(得分:1)
您可以尝试使用has_key
items=MyModel.objects.filter(data__has_key='key1').values_list('data',flat=True)
new_list=[]
for item in items:
new_list.append(item['key1'])
dist_list=list(set(new_list)) #list of distinct values.
答案 1 :(得分:1)
您可以使用KeyTransform
MyModel.objects.annotate(key1=KeyTransform('key1', 'data')).distinct('key1').values_list('key1', flat=True)