2017-07-15 46 views
0

我的模型中有一個基於Postgres的JSONField。Django 1.10 Postgres JSONField提取特定的鍵

class MyModel(models.Model): 
    data = JSONField(default=dict) 

的JSON樣本是這樣的:

{ 
    'key1': 'val1', 
    'key2': 'val2' 
} 

我有模型的多個對象,讓我們說〜50。

我想查詢data中的key1,並且想要獲得key1的所有不同值的列表。

我該怎麼做?請注意我正在使用Django 1.10。

回答

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. 
0

您可以使用KeyTransform爲

MyModel.objects.annotate(key1=KeyTransform('key1', 'data')).distinct('key1').values_list('key1', flat=True)