get_or_create throws Integrity Error
The parameters sent into the get_or_create
method need to match exactly, or django's ORM would try to create a new object, and since a primary key/unique column constraint would be violated, you are getting the error.
Try this:
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('/')
Read more on get_or_create
here. The defaults=
argument is what you needed.