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

标签 python django django-admin admin

我想将 Django 管理中的所有组字段重命名为角色字段。但仍有一些部分没有改变。

我已使用此代码 (models.py) 成功地将组重命名为角色:

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

    def __str__(self):
        return self.name

但是用户中的一个字段仍然有名称“组”。 Please see screenshot attached.

我知道它与 django.contrib.auth.models 中的 PermissionsMixin 有关,其中包含在 UserAdmin 中调用的 ManyToManyField 命名组。

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',)

最佳答案

您几乎肯定不想重命名模型字段,而只是更改管理中的标签。您可以通过自定义管理表单来实现。以下几行应该可以解决问题:

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)

关于python - 如何从默认的 Django 模型重命名模型字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57847956/

相关文章:

python - 无法在弹性 beantalk 上的 django 应用程序上安装 nltk 数据

python - 仅从python中的字符串中获取所需的部分

django - 如何在 heroku 上部署夹层?

django - 如何根据外部表中的值动态设置 django TabularInline 的 max_num?

python - Numpy 将N维数组转换为二维数组

python - 如何在 Django 中获取文件的扩展名?

python - Django 邮箱

django - 将所有序列化器字段设置为必需

django - Django 管理站点中的列/字段级权限?

Django:如何从特定用户的管理表单中删除字段?