当点击列标题时,如何使Django管理站点按字母顺序严格按值排序?下面的第2列是一个外键。
MyAdmin(admin.ModelAdmin):
list_display = ('column1', 'column2')
点击时此处的column2标题应按字母顺序排序更改列表但不是?
column2
b
a
c
or
column2
c
a
b
是输出。
答案 0 :(得分:0)
您提供的信息(截止到目前为止)不足以直接给您答复。但是根据你的说法,我怀疑你面临的问题如下:
Django Admin按字母顺序排序“字符串”(asc
或desc
,具体取决于当前状态),但当列是外键时,它按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
作为第二个排序参数?您可以查看管理员网址并查看给出的订购参数(如果您不知道如何理解网址,也可以将其粘贴到此处)。
我能想到的另一个版本是行值实际上不是a
,b
和c
,而是一些未正确排序的unicode内容默认(即通常a, b, ä
通常默认排序a, ä, b
,而实际上在爱沙尼亚字母表中,第一个排序是正确的排序。要解决此问题,请检查Django模型上的collation options。