我有这个样本模型与管理员一起工作
class Author(models.Model):
name = models.CharField(_('Text in here'), max_length=100)
将verbose_name设置为ugettext_lazy'文字在这里',但有时,根据site_id,我想提供一个不同的详细名称,所以我用这种方式修改了 init
def __init__(self, *args, **kwargs):
super(Author, self).__init__(*args, **kwargs)
#some logic in here
self._meta.get_field('name').verbose_name = _('Other text')
它有效,显示'其他文字'而不是'文字在这里'...除了第一次使用作者/添加视图。
¿这是正确的方法吗? ¿我怎样才能解决第一次问题?
提前致谢
答案 0 :(得分:4)
不要修改模型的元素。正如你所发现的那样,模型定义中会发生各种各样的元类事件,会破坏事物。
而是定义自定义表单并在那里更改__init__
方法中的字段标签。
答案 1 :(得分:1)
您只需添加verbose_name
class Author(models.Model):
name = models.CharField(max_length=100, verbose_name = 'Other text')