2015-08-09 4 views
1

Теперь мы используем Django.Django admin model plural mode глобальные настройки, не добавляя суффикс '

И наш язык - китайский.

Хотя вы знаете, в китайской грамматике множественное число обычно совпадает с единственным случаем. По крайней мере, не просто добавить английское письмо 'после слова.

Итак, поскольку мы установили verbose_name всех классов модели как китайский, и обнаружили, что на панели администратора все модели отображаются как XX.

Теперь мы должны установить множественное число вручную, точно так же, как и сам verbose_name:

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

Итак, есть ли способ, чтобы установить глобальное множественное преобразование правила?

ответ

1

Задание «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. Чтобы проверить эту открытую оболочку, импортируйте модель Опрос и печать

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

Спасибо, это работает, но, как вы сказали, это не эффективный способ улучшить мой код. –

+0

У этого нет проблем, связанных с эффективностью. Я просто хочу сказать, что вы должны использовать метаклассы. Кроме того, если он работает нормально, пожалуйста, примите ответ. –

Смежные вопросы