Sortierung habe ich die folgenden zwei Felder in meiner db-Tabelle und Modell (Modellname: Bestellung):django Admin ermöglicht für berechnete Felder
id, branch_id, product_id, cost, quantity, status, ordered_at
Und ich habe den folgenden Code in meinem OrderModelAdmin:
list_display = (
'order_number',
'branch',
'product',
'cost',
'quantity',
'calculated_total',
'status',
'ordered_at',
)
def calculated_total(self, obj):
return obj.cost * obj.quantity
calculated_total.short_description = _('Total')
Jetzt möchte ich die Sortierung für dieses Feld aktivieren. In Wirklichkeit alles, was ich tun müssen, um eine Spalte in meiner SELECT-Anweisung hinzuzufügen:
SELECT (t.cost * t.quantity) as TOTAL
ORDER BY TOTAL
Gibt es eine Weise, die ich eine SQL-Anweisung für die Sortierung in Django Admin anhängen?
Ich verwendete Annotation und es funktionierte richtig und es macht Sinn, aber der Code oben benötigt einige Feinabstimmungen. Ich musste 'calculated_total.admin_order_field = 'total' hinzufügen. Realistisch gesehen ist das genau das, wonach ich gesucht habe. So können Sie eine benutzerdefinierte Spalte hinzufügen und dieses Feld basierend auf dieser Spalte sortieren. Vielen Dank! – Gasim
@Gasim guter Punkt! In meiner ursprünglichen Antwort wurde der Abfragesatz standardmäßig nach Gesamt sortiert. Sie müssen 'admin_order_field' einstellen, wenn Sie auf die Spalte klicken möchten, um nach ihr zu sortieren. Ich habe das zur Antwort hinzugefügt. – Alasdair