【发布时间】:2019-12-25 14:25:33
【问题描述】:
我将它与 Python 3.6.5 一起使用。在我的 Django 2.1 应用程序中,我有一个这样的模型对象:
class Person(models.Model):
name = models.CharField(max_length=64)
有些名字带有变音符号。在我的admin.py 中,我有:
from django.contrib import admin
from .models import Person
class PersonAdmin(admin.ModelAdmin):
ordering = ['name']
admin.site.register(Person, PersonAdmin)
所以,这是我在访问 change_list 管理视图时得到的默认顺序:
Joseph
Josué
José
Éderson
但我需要它们按此顺序显示:
Éderson
Joseph
José
Josué
另外,当我有一个列表时,我有一个排序键来做这个技巧:
import locale
def sort_key_BR():
locale.setlocale(locale.LC_ALL, "pt_BR.UTF-8")
return locale.strxfrm
names = ['Joseph', 'Josué', 'José', 'Éderson']
names.sort(key=sort_key_BR())
for n in names:
print(n) # Éderson Joseph José Josué
值得一提的是,在我项目的settings.py 中,我已经有了:
LANGUAGE_CODE = 'pt-BR'
在 Django 模型中,通知排序键而不是默认 ordering 的正确方法是什么?相反,这样做的正确方法是什么?
【问题讨论】:
-
项目在数据库中排序。这听起来像是您的数据库排序规则的问题。
-
即使我的数据库有问题,我不认为是这种情况,
ordering正在根据 @ 中的字符串对我的数据(在此示例中为升序)进行排序987654332@字段后查询。不是吗? -
我不明白你的问题。管理视图要求您的数据库按排序顺序返回项目,Python 中没有排序。
-
好吧,我不知道。我会试着调查一下,谢谢。
标签: python django diacritics