Model.save() 在 django 错误'commit'得到了一个意外的关键字参数



我正在尝试实现注册表形式,并获得以下erorr:Model.save((获得了一个意外的关键字参数"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

views.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})
DjangoModel.save没有提交参数,请参阅此处的详细信息。因此,从new_user.save(commit=False)中删除commit=False。若您查看代码,new_user是模型new_user = CustomUser(email=user_email)的实例,而不是表单实例。

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

最新更新