如何从默认的 Django 模型重命名模型字段?
How to rename a model field from default Django model?
我想将 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
但是用户中的一个字段仍然有名称 'Groups'。
Please see screenshot attached.
我知道它与 django.contrib.auth.models 中的 PermissionsMixin 有关,其中包含 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',)
您几乎肯定不想重命名模型字段,而只是更改管理中的标签。您可以通过自定义管理表单来实现。以下几行应该可以解决问题:
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 管理中的所有组字段重命名为角色字段。但是还有一些地方没有改变。
我已使用此代码 (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
但是用户中的一个字段仍然有名称 'Groups'。 Please see screenshot attached.
我知道它与 django.contrib.auth.models 中的 PermissionsMixin 有关,其中包含 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',)
您几乎肯定不想重命名模型字段,而只是更改管理中的标签。您可以通过自定义管理表单来实现。以下几行应该可以解决问题:
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)