擅长:python、mysql、java
<p>发送到<code>get_or_create</code>方法的参数需要完全匹配,否则django的ORM将尝试创建一个新对象,并且由于主键/唯一列约束将被违反,您将得到错误。</p>
<p>试试这个:</p>
<pre><code>if form.is_valid():
first_name = form.cleaned_data['first_name']
last_name = form.cleaned_data['last_name']
myemail = form.cleaned_data['email']
mypass = form.cleaned_data['password']
if myemail and mypass:
myuser,created = User.objects.get_or_create(email=myemail, defaults = {'username': myemail, 'first_name': first_name, 'last_name': last_name})
if created:
myuser.set_password(mypass)
return HttpResponseRedirect('/')
</code></pre>
<p>阅读有关<a href="https://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create" rel="noreferrer">^{<cd1>} here</a>的更多信息。<code>defaults=</code>参数是您所需要的。</p>