django.db.utils.IntegrityError IntegrityError: (1062, "Duplicate entry '[email protected]' for key 'username_UNIQUE'")
herkes neler olduğunu biliyor musunuz?
django.db.utils.IntegrityError IntegrityError: (1062, "Duplicate entry '[email protected]' for key 'username_UNIQUE'")
herkes neler olduğunu biliyor musunuz?
parametreleri tam olarak eşleşmesi gerekir veya Django'nın ORM yeni bir nesne oluşturmak için çalışacağını söyledi ve bir birincil anahtar/benzersiz sütun kısıtlaması ihlal olacağını tarihi:
Sen yapmalıyım , hatayı alıyorsun.
bu deneyin: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('/')
Devamı get_or_create
here üzerinde. defaults=
argümanı, ihtiyacınız olan şeydir.
Bir çekicilik gibi çalıştım. Teşekkürler! –
Parolayı varsayılanlara koyamaz mısınız? –
Hayır, çünkü 'set_password' şifreyi toplayıp veritabanına kaydeder. Bunu yapmanın doğru yolu budur. – karthikr
Dört koşullara dayalı bir kaydı almak için Django soruyorsunuz:
Yani kombine dört alanları yok rekor. get_or_create
yöntem haline gönderilen
myuser, created = User.objects.get_or_create(
username=myemail, defaults={'first_name': first_name, 'last_name': last_name, 'email': myemail})
Bu cevap yanlış. kayıt olmasaydı get_or_create onu yaratırdı. Get_or_create bunun için ve kullanıcı zaten kullanıyor. Benzersiz kısıtlama hatası nedeniyle IntegrityError gösterilir. –
@VatsalJuneja Haklısınız. Teşekkürler! –
A Kullanıcı bu kullanıcı adıyla mevcut, ancak bu first_name, last_name veya email ile değil. –