在我的Django管理员更改列表中,有带音调符号的名字。如何正确订购?

2024-06-14 12:03:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我将它与python3.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模型中,通知排序键而不是默认值的正确方法是什么?更确切地说,什么是一个正确的方式做这件事


Tags: djangokey模型brimportadminnamesmodels
1条回答
网友
1楼 · 发布于 2024-06-14 12:03:01

我建议您使用另一个自动填充的文件并将其收起来”é" 和其他东西:

class Person(models.Model):
    name = models.CharField(max_length=64)
    url = models.CharField(max_length=64)

    def save(self, *args, **kwargs):
        self.url = self.name.replace("é", "e").lower()
        super(Person, self).save(*args, **kwargs)

然后在admin.py中:

from django.contrib import admin
from .models import Person

class PersonAdmin(admin.ModelAdmin):
    ordering = ['url']

admin.site.register(Person, PersonAdmin)

相关问题 更多 >