Ich habe das folgende Django-Modell (zugeordnet zu Tabelle 'A'):
%Vor%Ich möchte oben folgende einfache Abfrage durchführen:
%Vor%Ich versuche, rohes SQL zu vermeiden - wie kann das mit django implementiert werden (im obigen Beispiel verwende ich avg, aber die gleiche Frage ist auch relevant für max, min, sum etc.)?
Ich habe versucht, extra und aggregiert:
%Vor%und
%Vor%Die Aggregatfunktion funktioniert jedoch nur mit Modellfeldern, so dass das zusätzliche Feld hier nicht verwendet werden kann. Wie kann das mit Django gemacht werden?
Danke für die Hilfe
Soweit ich weiß, gibt es (leider) keine Möglichkeit, das zu tun, was Sie beschrieben haben, ohne auf Raw SQL zurückzugreifen.
Das heißt, ist eine Möglichkeit, den Durchschnitt zu berechnen, den Sie beschreiben, wenn Sie bereit sind, Ihre Daten ein wenig zu denormalisieren. Sie können beispielsweise eine neue Spalte mit dem Namen average_field
hinzufügen, die automatisch auf den entsprechenden Wert für save()
gesetzt wird. Sie können save()
entweder überschreiben oder auf ein Signal tippen, um dies automatisch zu tun. Zum Beispiel
Sobald Sie dies tun, wird Ihre Abfrage sehr einfach.
%Vor%Tags und Links django django-models