-1
这是我models.py:Django的Postgres的ArrayField __contain查找没有表现果然
class Dog(models.Model):
name = models.CharField(max_length=200)
data = JSONField()
def __unicode__(self):
return self.name
我的Django的外壳做:
Dog.objects.create(name='Rufus', data={ 'breed': 'labrador', 'owner': { 'name': 'Bob', 'other_pets': [{ 'name': 'Fishy', }], }, })
Dog.objects.create(name='Meg', data={'breed': 'collie'})
Dog.objects.filter(data__breed__contains='l')
然而,当我做了最后的命令它给了我empy queryset返回:
<QuerySet []>
The two obje CTS (MEG和鲁弗斯)应该有两回,因为它们都含有L-
这是我的查询:
SELECT "post_tagging_dog"."id", "post_tagging_dog"."name", "post_tagging_dog"."data" FROM "post_tagging_dog" WHERE "post_tagging_dog"."data" -> 'breed' @> '"l"'
您已检查生成的SQL? –
@ IgnacioVazquez-Abrams,我更新了我的问题 –
闻起来像一个错误。我*认为*正确的条件应该是'''在post_tagging_dog“。”data“ - >'breed'中,但是我对PostgreSQL的JSON支持没有经验。 –