__init__() got an unexpected keyword argument 'user'

前端 未结 4 544
暗喜
暗喜 2020-12-25 12:14

i am using Django to create a user and an object when the user is created. But there is an error

__init__() got an unexpected keyword argument \'user\'<

4条回答
  •  太阳男子
    2020-12-25 13:17

    I got the same error.

    On my view I was overriding get_form_kwargs() like this:

    class UserAccountView(FormView):
        form_class = UserAccountForm
        success_url = '/'
        template_name = 'user_account/user-account.html'
    
    def get_form_kwargs(self):
        kwargs = super(UserAccountView, self).get_form_kwargs()
        kwargs.update({'user': self.request.user})
        return kwargs
    

    But on my form I failed to override the init() method. Once I did it. Problem solved

    class UserAccountForm(forms.Form):
        first_name = forms.CharField(label='Your first name', max_length=30)
        last_name = forms.CharField(label='Your last name', max_length=30)
        email = forms.EmailField(max_length=75)
    
        def __init__(self, *args, **kwargs):
            user = kwargs.pop('user')
            super(UserAccountForm, self).__init__(*args, **kwargs)
    

提交回复
热议问题