DJango 包含在 JSONField 上不起作用

Pee*_*yte 8 python django django-orm

我已经创建了这样的模型:

class Customer(models.Model):
    name = models.CharField(max_length=200)
    data = JSONField()
Run Code Online (Sandbox Code Playgroud)

和数据归档具有以下结构:

Customer.objects.create(name='David', data={
    'key1': 'text1',
    'key2': 'text2',
    },
})
Run Code Online (Sandbox Code Playgroud)

问题是当我想通过 contains 查询时,它不返回任何结果。

Customer.objects.filter(data__key1__contains='t')
Run Code Online (Sandbox Code Playgroud)

生成的 sql 查询结果不能为“类似 json”的结构提供正确的 sql。

Piy*_*are 10

尝试这个:

Customer.objects.filter(data__key1__icontains='t')
Run Code Online (Sandbox Code Playgroud)


Wil*_*ied 4

https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/fields/#std:fieldlookup-hstorefield.contains

Customer.objects.filter(data__contains={'key1': 'text1'})
Run Code Online (Sandbox Code Playgroud)

返回的对象是给定的键值对字典全部包含在字段中的对象。