在django admin的模型字段中修改即时verbose_name

Per*_*erd 3 django django-models django-admin

我有这个示例模型与管理员一起工作

class Author(models.Model):
    name = models.CharField(_('Text in here'), max_length=100)
Run Code Online (Sandbox Code Playgroud)

将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')
Run Code Online (Sandbox Code Playgroud)

它的工作原理是显示“其他文本”而不​​是“此处的文本” ...,但首次使用作者/添加视图除外。

¿这是正确的方法吗?¿我该如何解决第一次出现的问题?

提前致谢

Dan*_*man 5

不要修改模型的元素。正如您所发现的,模型定义中发生了各种各样的元类事情,这些事情会破坏事情。

而是定义一个自定义表单,然后在其中的__init__方法中更改字段标签。