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 ...