如何从默认的Django模型中重命名模型字段?

3

我希望将Django管理界面中的所有"Groups"字段都改为"Roles"。但是仍有一些部分没有更改。

使用以下代码(models.py),我已成功将"Groups"重命名为"Roles":

class Role(Group):
    class Meta:
        proxy = True
        app_label = 'auth'
        verbose_name = _('role')
        verbose_name_plural = _('roles')

    def __str__(self):
        return self.name

但是在Users中一个字段仍然被命名为“Groups”。 请看附带的截图。 我知道这与django.contrib.auth.models中的PermissionsMixin有关,其中包含了被称为groups的ManyToManyField,该字段在UserAdmin中被调用。
class PermissionsMixin(models.Model):
    ...
    groups = models.ManyToManyField(
        Group,
        verbose_name=_('groups'),
        blank=True,
        help_text=_(
            'The groups this user belongs to. A user will get all permissions '
            'granted to each of their groups.'
        ),
        related_name="user_set",
        related_query_name="user",
    )
    ...

我想知道如何重命名这个模型字段。

编辑: 这是UserAdmin的代码:

    class UserAdmin(BaseUserAdmin):
        form = UserAdminChangeForm
        add_form = UserAdminCreationForm

        list_display = ('username',)
        fieldsets = (
            (None, {'fields': ('username', 'password',)}),
            (None, {'fields': ('groups',)}),
        )
        add_fieldsets = (
            (None, {
                'classes': ('wide',),
                'fields': ('username', 'password1', 'password2')}
            ),
        )
        filter_horizontal = ('groups',)

请提供您所指的代码。 - Lord Elrond
您好,@CalebGoodman先生!我已经添加了我正在参考的代码。 - Semb
谢谢。我正在研究这个问题。你能给我展示一下生成图像的代码吗?我对Django很熟悉,只是不太了解admin包。 - Lord Elrond
@CalebGoodman 先生,我又编辑了一遍。希望现在更清晰了。谢谢! - Semb
1个回答

2
您几乎肯定不想重命名模型字段,而只是在管理界面中更改标签。您可以通过自定义管理表单来实现这一点。以下内容应该能够解决问题:
class UserAdmin(BaseUserAdmin):
    # ...
    def get_form(self, request, obj=None, change=False, **kwargs):
        kwargs['labels'] = {'groups': 'roles'}
        return super().get_form(request, obj=obj, change=change, **kwargs)

谢谢您先生,它有效了。然而,我还想更改过滤器字段中的标签(从“可用组”更改为“可用角色”,从“已选择组”更改为“已选择角色”),我不知道是否有一种方法可以在不修改Django默认模型字段的情况下简单地更改它。 - Semb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接