Gemäß der Django JSONField-Dokumentation wird erklärt, dass die data
Die Struktur stimmt mit dem nativen Python-Format überein, mit einem etwas anderen Ansatz bei der Abfrage.
Wenn Sie die Struktur des JSON kennen, können Sie auch nach Schlüsseln filtern, als wären es verwandte Felder:
object.filter(data__animal='cat')
object.filter(data__name='tom')
Durch Array-Zugriff:
object.filter(data__0__animal='cat')
Ihr Enthält-Beispiel ist fast korrekt, aber Ihre Daten befinden sich in einer Liste und erfordern:
object.filter(data__contains=[{'animal': 'cat'}])