iva*_*123 3 django hash inheritance admin
我正在尝试更改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)
Run Code Online (Sandbox Code Playgroud)
问题是每当我用密码保存用户时,它都显示为没有散列.我想问题是,我需要用我的新表单哈希密码字段.但旧的形式是这样做的,那么有没有办法可以扩展旧形式?
你也可以继承现有的UserChangeForm
中django.contrib.auth.forms
,并自定义其行为,而不是子类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)
Run Code Online (Sandbox Code Playgroud)
以上将使用用户密码的默认行为,即显示密码哈希,并链接到密码更改表单.如果你想修改它,我会看看SetPasswordForm
,看看如何在Django管理员中设置密码.