我有我的数据库表和模型下面的两个字段(型号名称订购):Django管理使分拣计算领域
id, branch_id, product_id, cost, quantity, status, ordered_at
而且我在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')
现在,我想启用该字段的排序。在现实中,我需要做的是在我的SELECT语句中添加一列:
SELECT (t.cost * t.quantity) as TOTAL
ORDER BY TOTAL
有没有一种方法,我可以追加SQL语句在Django管理排序?
我用注解,它工作正常,它是有道理的,但上面的代码需要一些调整。我不得不添加'calculated_total.admin_order_field ='total''。实际上,这正是我所期待的。能够添加自定义列并根据该列对该字段进行排序。谢谢! – Gasim
@Gasim好点!默认情况下,我的原始答案按总数排序查询集。如果您想要点击列进行排序,您需要设置“admin_order_field”。我已经添加了答案。 – Alasdair