【发布时间】:2021-06-08 08:21:54
【问题描述】:
我需要 django(2.1.1) 管理员按计算值对模型的更改列表页面进行排序。这是我在管理类中的内容:
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.annotate(
virtual_sale=ExpressionWrapper(Func(F('sales_total'), Value('virtual'), Value('count'),function='jsonb_extract_path_text'),output_field=IntegerField())
)
return qs
def virtual_sale(self, obj):
return obj.virtual_sale
virtual_sale.admin_order_field = 'virtual_sale'
仅供参考,注释是从 JSONField“sales_total”中提取一个 IntegerField“virtual_sale”。
但是在排序时,它的排序方式是 virtual_sale 值是字符串,我的意思是它是这样排序的:[0,1,11,2,330,5]
问题是什么,我该如何解决?
【问题讨论】:
标签: django-admin django-annotate