我正在尝试更改 Django 中的用户管理员。在我的项目中,需要电子邮件地址、名字和姓氏。我更改了我的用户管理员如下:
class UserForm(forms.ModelForm):
class Meta:
model = User
def __init__(self, *args, **kwargs):
super(UserForm, self).__init__(*args, **kwargs)
self.fields['email'].required = True
self.fields['first_name'].required = True
self.fields['last_name'].required = True
class UserAdmin(admin.ModelAdmin):
form = UserForm
list_display = ('first_name','last_name','email','is_active')
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
问题是每当我用密码保存用户时,它都会显示为没有哈希值。我想问题是,我需要用新表单对密码字段进行哈希处理。但旧的形式可以做到这一点,那么有没有办法可以扩展旧的形式?
最佳答案
您可以在django.contrib.auth.forms
中对现有的UserChangeForm
进行子类化,并自定义其行为,而不是子类化 forms.ModelForm
。
from django.contrib.auth.forms import UserChangeForm
class MyUserChangeForm(UserChangeForm):
def __init__(self, *args, **kwargs):
super(MyUserChangeForm, self).__init__(*args, **kwargs)
self.fields['email'].required = True
self.fields['first_name'].required = True
self.fields['last_name'].required = True
class UserAdmin(admin.ModelAdmin):
form = MyUserChangeForm
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
上面将使用用户密码的默认行为,即显示密码哈希,并链接到密码更改表单。如果您想修改它,我会查看 SetPasswordForm
,了解如何在 Django 管理中设置密码。
关于django - 在 django 中扩展用户管理表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057280/