2010-05-20 81 views
1

我有这样的样品模型与管理修改上即时verbose_name在模型字段上Django管理

class Author(models.Model): 
    name = models.CharField(_('Text in here'), max_length=100) 

与verbose_name设置为ugettext_lazy“在此处的文本”的工作,但有时,这取决于SITE_ID我想提出一个diferent冗长的名字,所以我修改了初始化这样

def __init__(self, *args, **kwargs): 
    super(Author, self).__init__(*args, **kwargs) 
    #some logic in here 
    self._meta.get_field('name').verbose_name = _('Other text') 

它的工作原理,显示“其他文本”,而不是“在此处的文本” ......除了极第一次使用作者/添加视图。

¿这是否正确吗? ¿我如何解决第一次问题?

在此先感谢

回答

3

请勿修改模型的元素。正如你发现的那样,模型定义中会出现各种各样的元类事件,这些事件将会破坏事物。

取而代之,定义一个自定义表格并在那里更改__init__方法中的字段标签。

+0

完美。 当我创建自定义窗体verbose_name以正确的方式显示。即使它可以在模型中进行修改,但是正如你所建议的那样,将所有的个性化内容移动到表单中以避免破坏事物。 非常感谢 – PerroVerd 2010-05-21 08:03:23

相关问题