GJ.*_*GJ. 5 django django-admin
我有一个自定义list_display字段,它负责我的一个管理页面中的整数列.
我需要让工作人员按照它排序.
如果整数表示某个DB字段的计数/平均值/等等,那么如何实现该解决方案,这对我来说并非如此.
[该案例的解决方案在这里:Django admin:如何按没有数据库字段的自定义list_display字段之一进行排序 ]
任何想法如何实现这种排序,而不实际创建和维护值的数据库字段?
排序是在数据库引擎上完成的(按照order by子句),所以我认为除非你在模型中实现了一个字段,否则你无法实现你想要的.此时计算状态不可排序(至少不在管理界面中,如果您使用自己的界面,则可以使用额外的).
如果问题是过滤,你可以编写一个自定义的FilterSpec(它似乎没有在任何地方记录,但SO有一个很好的例子).
但是对于在管理员中排序,你唯一的选择是物化领域,我担心.
编辑:
嗯...
你可以尝试一下.有可能(虽然我不认为它在任何地方正式记录)更改ModelAdmin使用的查询集.如果您的计算字段足够简单以嵌入查询本身,您可以执行以下操作:
class BlahAdmin(admin.ModelAdmin):
... Whatever definitions ...
def queryset(self, request):
return Blah.objects.extra(select={'computed': "count(field_x)"})
Run Code Online (Sandbox Code Playgroud)
这可能会奏效.虽然没经过测试.
| 归档时间: |
|
| 查看次数: |
5479 次 |
| 最近记录: |