我无法弄清楚如何让管理员使用自定义列排序记录 - hours_to_deadline
(当他们点击列标题时)。在我的情况下,它是timedelta。
class JobAdmin(SuperModelAdmin):
...
list_display = ['id', 'identificator', 'created', 'invoice__estimated_delivery','hours_to_deadline','customer__username', 'language_from__name', 'language_to__name',
'delivery__status', 'confirmed', 'approved', 'invoice__final_price']
...
def hours_to_deadline(self,obj):
try:
return (obj.invoice.estimated_delivery - now())
except:
return None
我找到了这个解决方案:https://stackoverflow.com/a/15935591/3371056
但就我而言,我不能只做sum
或类似的事情。
你知道该怎么办吗?
答案 0 :(得分:1)
您不能通过非实际数据库字段的字段进行排序,因为所有排序都是在数据库级别完成的。如果它有一个与数据库字段有关的值,你可以在模型定义中做类似的事情:
hours_to_deadline.admin_order_field = 'database_field'
你可以在这里阅读更多相关信息 https://docs.djangoproject.com/en/1.10/ref/contrib/admin/
答案 1 :(得分:-2)
答案是:ordering =(' -id',)
class JobAdmin(SuperModelAdmin):
list_display = ['id', 'identificator', 'created', 'invoice__estimated_delivery','hours_to_deadline','customer__username', 'language_from__name', 'language_to__name',
'delivery__status', 'confirmed', 'approved', 'invoice__final_price']
ordering = ('-id',)
def hours_to_deadline(self,obj):
try:
return (obj.invoice.estimated_delivery - now())
except:
return None