指定 'verbose_name_plural' 是在 django 模型中覆盖 meta 选项的简单方法。但是如果你想以编程方式设置它,那么你可以通过定义你自己的元类来做到这一点,如下所示:
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)