Django 创建用户更新视图时遇到的问题
我有一个自定义用户模型,Django 创建用户更新视图时遇到的问题,django,django-forms,django-views,Django,Django Forms,Django Views,我有一个自定义用户模型,AbstractBaseUser的子类。 我目前无法创建更新视图,所以用户可以更改其个人资料。通过管理界面更改用户可以正常工作 这是一个表单,我用来更改管理员和应用程序界面中的用户对象 class UserChangeForm(forms.ModelForm): password = ReadOnlyPasswordHashField( label=_("Password"), help_text=_( "R
AbstractBaseUser
的子类。
我目前无法创建更新视图,所以用户可以更改其个人资料。通过管理界面更改用户可以正常工作
这是一个表单,我用来更改管理员和应用程序界面中的用户对象
class UserChangeForm(forms.ModelForm):
password = ReadOnlyPasswordHashField(
label=_("Password"),
help_text=_(
"Raw passwords are not stored, so there is no way to see this "
"user's password, but you can change the password using "
"<a href=\"{}\">this form</a>."
),
)
class Meta:
model = User
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
password = self.fields.get('password')
if password:
password.help_text = password.help_text.format('../password/')
user_permissions = self.fields.get('user_permissions')
if user_permissions:
user_permissions.queryset = user_permissions.queryset.select_related('content_type')
def clean_password(self):
return self.initial["password"]
如果我传递fields
参数,比如UserChangeForm(request.POST或None,request.user,fields=('email','first\u name'))
我得到\uu init\uuuu()得到一个意外的关键字参数'fields'
错误
如果我没有通过它,我会得到与管理程序中的所有文件完全相同的格式
如何使此表单仅显示所需字段?一个解决方案是创建
UserChangeForm
的子类,以便您可以在Meta
类中选择所需字段:
class MyUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = User
fields = ['email', 'first_name]
然后在您看来,您使用您制作的新表单:
def update_user(request):
form = MyUserChangeForm(request.POST or None, instance=request.user)
# and so on ...
def update_user(request):
form = MyUserChangeForm(request.POST or None, instance=request.user)
# and so on ...