Ich hoffe, eine Django-Abfrage durch den Vergleich zweier Werte innerhalb einer JSONField-Klasse zu machen. Ich lief über Django F() Objekte für Referenzen Felder im Modell, aber es scheint nicht mit JSONField zu arbeiten, wie es versucht, eine JOIN
mit dem späteren Abschnitt zu tun. So zum Beispiel:Django, JSONField, Postgres und F() Objektvergleich
class Event(models.Model):
data = JSONField(default=None)
Nehmen wir an, das Datenfeld so etwas wie folgt aussieht:
{
"value_1":20,
"value_2":25
}
Ich hatte gehofft, es wie so abfragen:
events = Event.objects.filter(data__value_2__gte=F('data__value_1'))
jedoch der Fehler so etwas wie dieses:
Cannot resolve keyword 'value_1' into field. Join on 'data' not permitted.
Auch haben versucht:
events = Event.objects.filter(data__value_2__gte=F('data')['value_1'])
Aber da bin den Fehler:
TypeError: 'F' object has no attribute '__getitem__'
auch; Django 1.10, Python 2.7.11, PG Version: 9.4.9
Gibt es eine Idee, wie man basierend auf einem Vergleich von Wert_1 und Wert_2 filtern kann?
Dies ist nur eine Vermutung, aber versuchen Sie 'data__value_2__gte = F ('Daten') ['value_1']'. –
Hat nicht funktioniert: TypeError: 'F' Objekt hat kein Attribut '__getitem__' – dperconti
Django 1.10, Python 2.7.11 – dperconti