0

我的模型中有一个基于 Postgres 的 JSONField。

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

JSON 示例如下:

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

我有多个模型对象,比如说~50。

我试图只查询key1内部data,并希望获得所有不同值的列表key1

我怎样才能做到这一点?请注意我使用的是 Django 1.10。

4

2 回答 2

1

您可以为此使用 KeyTransform

MyModel.objects.annotate(key1=KeyTransform('key1', 'data')).distinct('key1').values_list('key1', flat=True)
于 2017-12-07T13:09:11.397 回答
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.
于 2017-07-15T07:11:04.720 回答