簡體   English   中英

Model.save() 得到了一個意外的關鍵字參數 'commit' django 錯誤

[英]Model.save() got an unexpected keyword argument 'commit' django error

我正在嘗試實現注冊表單,但我得到了這個錯誤: Model.save() got an unexpected keyword argument 'commit'

我寫了保存方法,但我仍然得到一個錯誤

forms.py

class RegisterForm(forms.ModelForm):
class Meta:
    model = CustomUser
    fields = ['email', 'password', 'password2']


    def save(self, commit=True, *args, **kwargs):
        user = super(RegisterForm, self).save(commit=False)
        user.email = self.cleaned_data['email']
        user.password = self.cleaned_data['password']
        if commit:
            user.save()

        return user

視圖.py

class UserRegisterView(View):
User = get_user_model()
form_class = forms.RegisterForm
template_name = 'account/register.html'

def dispatch(self, request, *args, **kwargs):
    if request.user.is_authenticated == True:
        return redirect('home:home')
    return super().dispatch(request, *args, **kwargs)

def get(self, request):

    form = self.form_class()
    return render(request, self.template_name, {'form': form})

def post(self, request):
    form = self.form_class(request.POST)
    if form.is_valid():
        user_email = form.cleaned_data.get('email')
        user_password = form.cleaned_data.get('password')
        new_user = CustomUser(email=user_email)
        new_user.set_password(user_password)
        new_user.is_active = False
        new_user.save(commit=False)
        activateemail(request, new_user, user_email)


        return redirect('account:user_login')

    return render(request, self.template_name, {'form': form})

Django Model.save沒有提交參數,請參閱此處詳細信息。 所以從new_user.save(commit=False)中刪除commit=False 如果您查看代碼, new_user是 model new_user = CustomUser(email=user_email)的實例,而不是表單實例。

可能你對Form.save方法感到困惑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM