首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django 1.5类Meta没有属性“verbose_name_plural”

Django 1.5类Meta没有属性“verbose_name_plural”
EN

Stack Overflow用户
提问于 2013-07-25 09:38:27
回答 1查看 919关注 0票数 0

我已经将我的项目从Django1.3升级到了Django1.5,但是出现了一个错误"AttributeError: class Meta没有属性'verbose_name_plural'“

基类

代码语言:javascript
复制
class PortalModelBase(models.base.ModelBase):
   def __new__(cls, name, bases, attrs):
        attr_meta = attrs.pop('Meta', None)

        try:
           is_global = attr_meta.is_global
           del attr_meta.is_global
        except AttributeError:
           is_global = False

        attrs['Meta'] = attr_meta
        model = super(PortalModelBase, cls).__new__(cls, name, bases, attrs)
        model._meta.is_global = is_global
        return model

class Meta:
    abstract = True

模型类

将元类作为PortalModelBase

代码语言:javascript
复制
class PortalModel(models.Model):  
   __metaclass__ = PortalModelBase

    name = models.CharField(max_length=255, verbose_name='name*', help_text='Enter Name', blank=False)
    description = models.CharField(max_length=1024, verbose_name='Description', help_text="Enter a description", blank=True,null=True, default='')
   createdby = models.CharField(max_length=128)
   createdon = models.DateTimeField()
   modifiedby = models.CharField(max_length=128)
   modifiedon = models.DateTimeField()


  def __init__(self_, *args, **kwargs):
    log.info("Portal model initializing")
    if kwargs:
        d = copy.copy(kwargs)
        for key in d:

            if key not in self_._meta.get_all_field_names():
                #The key given by the dictionary is not in the model.
                #Django, by design, will throw an exception
                #this prevents that
                kwargs.pop(key)

    return super(PortalModel, self_).__init__(*args, **kwargs)

  class Meta:
    abstract = True

继承类

代码语言:javascript
复制
class TestIP(PortalModel):

     address = models.CharField(max_length=128, verbose_name='VIP')

   class Meta:
       abstract = False
       verbose_name = 'testIP'
      verbose_name_plural = "testips"

试图在verbose_name_plural获取错误中调用views.py "AttributeError: class Meta没有属性'verbose_name_plural'“

Views.py

代码语言:javascript
复制
kwargs[TestIP.Meta.verbose_name_plural.lower().replace(' ', '')] = table

它在Django1.3中运行良好,请帮助解决这个问题。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-25 10:26:29

我想出了答案

在Django1.5中,我们应该访问像'TestIP._meta.verbose_name_plural‘这样的元类

我变了

代码语言:javascript
复制
kwargs[TestIP.Meta.verbose_name_plural.lower().replace(' ', '')] = table

代码语言:javascript
复制
kwargs[TestIP._meta.verbose_name_plural.lower().replace(' ', '')] = table

它在django1.5中运行良好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17854306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档