当单击列标题时,如何使Django管理站点严格按字母顺序排序?下面的column2是一个外键。
MyAdmin(admin.ModelAdmin):
list_display = ('column1', 'column2')
在这里,当单击column2头时,应该按字母顺序对更改列表排序,但不是吗?
column2
b
a
c
or
column2
c
a
b
是输出。
发布于 2017-09-09 10:41:48
你提供的信息(目前为止)还不足以给你一个直截了当的答案。然而,根据你所说的,我怀疑你所面临的问题如下:
Django按字母顺序(asc
或desc
,取决于当前状态)对"Strings“进行排序,但是当列是外键时,它按id
进行排序,即使它显示的是模型上的__str__(self):
方法指定的”字符串“。
由于排序是在数据库中完成的,据我所知,如果不编辑queryset
,您将无法完成排序(请检查这个答案,以看到一个示例:显示字段,它没有DB字段,也没有可注释的)。
发布于 2017-09-09 10:42:26
这应该是默认行为。也许您以前单击过另一个列标题,然后它将column2
添加为第二个排序参数?您可以检查admin并查看所给出的排序参数(如果您不知道如何理解该URL,也可以将其粘贴在这里)。
我可以想到的另一个版本是,行值实际上不是a
、b
和c
,而是一些默认排序不正确的unicode (通常a, b, ä
通常是默认排序的a, ä, b
,而实际上在爱沙尼亚字母中,第一个排序是正确的)。要解决这个问题,请查看Django模型上的排序选项。
https://stackoverflow.com/questions/46133067
复制相似问题