在 django 中扩展用户管理表单
我正在尝试更改 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)
问题是每当我用密码保存用户时,它都会显示为没有哈希值。我想问题是,我需要用新表单对密码字段进行哈希处理。但旧的形式可以做到这一点,那么有没有办法可以扩展旧的形式?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以在 UserChangeForm 进行子类化>
django.contrib.auth.forms
,并自定义其行为,而不是子类化forms.ModelForm
。上面将使用用户密码的默认行为,即显示密码哈希,并链接到密码更改表单。如果你想修改它,我会查看
SetPasswordForm
,看看如何在 Django 管理中设置密码。You can subclass the existing
UserChangeForm
indjango.contrib.auth.forms
, and customise its behaviour, rather than subclassingforms.ModelForm
.The above will use the default behaviour for the user password, which is to display the password hash, and link to the password change form. If you want to modify that, I would look at
SetPasswordForm
, to see how the password is set in the Django admin.