gpt4 book ai didi

python - Django admin模型复数模式全局设置,不添加后缀 's'

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:36 27 4
gpt4 key购买 nike

我们现在使用 Django。

我们的语言是中文。

虽然你知道,在中文语法中,复数形式通常与单数形式相同。至少,不只是在单词后面加一个英文字母“s”。

所以,由于我们将每个Model类的verbose_name设置为中文,并且发现在管理面板中,所有Model都显示为XX。

现在我们必须手动设置复数,就像 verbose_name 本身一样:

class Meta:
db_table = 'the_table_name'
verbose_name = 'object_name'
verbose_name_plural = 'object_name'

那么,有没有办法设置全局复数变换规则呢?

最佳答案

指定“verbose_name_plural”是覆盖 django 模型中元选项的简单方法。但如果您想以编程方式设置它,那么您可以通过定义自己的元类来完成此操作,如下所示:

from django.db.models.base import ModelBase

class CustomModelMetaClass(ModelBase):

def __new__(cls, name, bases, attrs):
klas = super(CustomModelMetaClass, cls).__new__(cls, name, bases, attrs)
klas._meta.verbose_name_plural = klas._meta.verbose_name

return klas

现在在您的模型中使用这个元类,如下所示

class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')

__metaclass__ = CustomModelMetaClass

它将把 verbose_name_plural 设置为与 verbose_name 相同。要验证此打开的 shell,请导入模型 Poll 并打印

unicode(Poll._meta.verbose_name_plural)
unicode(Poll._meta.verbose_name)

关于python - Django admin模型复数模式全局设置,不添加后缀 's',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31902239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com