Ich benutze Django 1.9 mit seinem eingebauten JSONField und Postgres 9.4. In meinem Modell attrs
JSON-Feld ich Objekte mit einigen Werten, einschließlich Zahlen. Und ich muss über sie aggregieren, um Min/Max-Werte zu finden. Etwas wie folgt aus:Wie aggregiert man (min/max usw.) über Django JSONField Daten?
Model.objects.aggregate(min=Min('attrs__my_key'))
Auch wäre es sinnvoll sein, bestimmte Tasten zu extrahieren:
Model.objects.values_list('attrs__my_key', flat=True)
Die obigen Abfragen fehl mit FieldError
: „Kann nicht Stichwort lösen‚my_key‘in Feld Join auf‚attrs. ' nicht gestattet."
Ist es irgendwie möglich?
Hinweise: 1) Ich weiß, wie Klar Postgres Abfrage macht die Arbeit zu tun, damit ich speziell für ORM-Lösung zu suchen, die Fähigkeit, filtern usw. 2) Ich nehme an, dies mit (relativ) neuen getan werden kann, Abfrage Ausdrücke/Lookups API, aber ich habe es noch nicht untersucht.
Die Antwort unten ist gut. Eine andere nützliche Seite, die dies diskutiert, kann [hier] gefunden werden (http://hatethatcode.com/writing-queries-for-django-models-with-jsonfield.html). – eykanal