-1
Das ist mein models.py:Django Postgres ArrayField __contain Lookup verhält sich nicht erwartungs
class Dog(models.Model):
name = models.CharField(max_length=200)
data = JSONField()
def __unicode__(self):
return self.name
Ich tat dies in der django-Shell:
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')
Allerdings, wenn ich den letzten Befehl tat es gab mir einen empy queryset zurück:
<QuerySet []>
Die zwei obje cts (Meg und Rufus) sollten beide zurückgegeben haben, weil sie beide l
Das ist meine Abfrage enthalten:
SELECT "post_tagging_dog"."id", "post_tagging_dog"."name", "post_tagging_dog"."data" FROM "post_tagging_dog" WHERE "post_tagging_dog"."data" -> 'breed' @> '"l"'
Haben Sie untersuchten die generierten SQL? –
@ IgnacioVazquez-Abrams, ich habe meine Frage aktualisiert –
Riecht wie ein Fehler. Ich denke, die korrekte Bedingung sollte "l" in "post_tagging_dog" sein. "Data" -> "zucht", aber ich habe keine Erfahrung mit PostgreSQL JSON-Unterstützung. –