Sto usando django 1.9 con il suo JSONField integrato e postgres 9.4. Nel campo json attrs
del mio modello, memorizzo oggetti con alcuni valori, compresi i numeri. E ho bisogno di aggregare su di loro per trovare valori min/max. Qualcosa di simile a questo:Come aggregare (min/max ecc.) Su dati Django JSONField?
Model.objects.aggregate(min=Min('attrs__my_key'))
Inoltre sarebbe utile per estrarre i tasti specifici:
Model.objects.values_list('attrs__my_key', flat=True)
Le query precedenti non riescono con FieldError
: "Impossibile risolvere parola chiave 'my_key' nel campo Join su 'attrs. ' non consentito."
È possibile in qualche modo?
Note: 1) So come fare domanda Postgres semplici per fare il lavoro in modo da cercare specificamente per soluzione ORM di avere la capacità di filtrare ecc 2) Suppongo che questo può essere fatto con (relativamente) nuovo query espressioni/lookups api ma non l'ho ancora studiato.
La risposta sotto è buona. Un altro sito utile che discute di questo può essere trovato [qui] (http://hatethatcode.com/writing-queries-for-django-models-with-jsonfield.html). – eykanal