gpt4 book ai didi

django - 在 django 中扩展用户管理表单

转载 作者:行者123 更新时间:2023-12-02 00:11:15 24 4
gpt4 key购买 nike

我正在尝试更改 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com