のために並べ替えを有効にDjangoの管理者は、私は私のdbテーブルとモデル(:注文モデル名)で、次の二つのフィールドを持っている計算フィールド
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')
ここでは、このフィールドのソートを有効にします。現実には、私がする必要があるすべては私のSELECTステートメントの列を追加することです:
SELECT (t.cost * t.quantity) as TOTAL
ORDER BY TOTAL
は、私はDjangoの管理者にソートするためのSQL文を追加することができます方法はありますか?
注釈を使用していて、正しく機能していて、意味がありますが、上のコードでは微調整が必要でした。私は 'calculated_total.admin_order_field = 'total''を追加しなければなりませんでした。現実的には、これはまさに私が探していたものです。カスタム列を追加して、その列に基づいてそのフィールドをソートできるようにする。ありがとうございました! – Gasim
@Gasim良い点!私の元の答えは、デフォルトではクエリーセットを合計でソートしました。列をクリックして並べ替えるには、 'admin_order_field'を設定する必要があります。私は答えにそれを加えました。 – Alasdair