小编Shu*_*uvo的帖子

Django管理页面:可以使用查询集额外字段来排序特定列

因此,查询集中的额外字段可用于向选择查询添加其他列,而后者又可以设置为默认排序.到目前为止,我已经能够实现这一点:创建了一个额外的字段,然后将其设置为默认排序.

qs = qs.extra(select={'natname':"concat('0', nat, name)"}, order_by=['natname'])
Run Code Online (Sandbox Code Playgroud)

现在,在我的管理界面中,我有其他字段{name, nat, location, space, ....},表格中的结果按natname页面加载时排序...完美.

但是现在我想在name现场进行排序,但不是按顺序排序name,我希望它按顺序排序natname.这可能吗?

所以即使natname是一个额外的字段,我想以某种方式绑定列namenatname订购时.

现在,如果我这样做qs.query.__str__(),我会得到sql查询order by natname.当我点击列时name,按更改顺序排序name,但仅针对此特殊情况,我希望它按顺序排序natname.这可能吗?

我已经了解了Django如何为这些自动化管理页面生成标题和视图,<django-installation-path>/contrib/admin但它只引用了此模型中list_display定义的集合ModelAdmin.如果我在那里进行任何更改,则显示的列将在admin-view中更改.

听起来有点令人困惑.如果您需要特殊细节,请随时询问.

谢谢.

django admin sql-order-by django-queryset extra

4
推荐指数
1
解决办法
2032
查看次数

标签 统计

admin ×1

django ×1

django-queryset ×1

extra ×1

sql-order-by ×1