Django管理站点列标题按值排序不按字母顺序排列?

时间:2017-09-09 17:05:19

标签: django django-admin

当点击列标题时,如何使Django管理站点按字母顺序严格按值排序?下面的第2列是一个外键。

MyAdmin(admin.ModelAdmin):
    list_display = ('column1', 'column2')

点击时此处的column2标题应按字母顺序排序更改列表但不是?

column2
b
a
c

or 

column2
c
a
b

是输出。

2 个答案:

答案 0 :(得分:0)

您提供的信息(截止到目前为止)不足以直接给您答复。但是根据你的说法,我怀疑你面临的问题如下:

Django Admin按字母顺序排序“字符串”(ascdesc,具体取决于当前状态),但当列是外键时,它按id排序,甚至虽然它显示的是您在模型上由__str__(self):方法指定的“字符串”。

由于排序是在数据库中完成的,根据我的知识,如果不编辑queryset,您将无法执行此操作(请查看此答案以查看示例:How to allow sorting in the Django admin by a custom list_display field, which doesn't have a DB field nor annotatable)。< / p>

答案 1 :(得分:0)

这应该是默认行为。也许您之前点击了另一个列标题,然后它添加column2作为第二个排序参数?您可以查看管理员网址并查看给出的订购参数(如果您不知道如何理解网址,也可以将其粘贴到此处)。

我能想到的另一个版本是行值实际上不是abc,而是一些未正确排序的unicode内容默认(即通常a, b, ä通常默认排序a, ä, b,而实际上在爱沙尼亚字母表中,第一个排序是正确的排序。要解决此问题,请检查Django模型上的collation options