Saturday, July 2, 2016

IntegrityError column email is not unique

I am working on my Checkout view with regular/guest user but getting hard time to come around the integrity error. Idea is to let guest users register with email only to checkout and I need to set the user email unique. 

models.py

from django.conf import settings  from django.db import models    class UserCheckout(models.Model):      user = models.OneToOneField(settings.AUTH_USER_MODEL, null=True, blank=True)      email = models.EmailField(unique=True)        def __unicode__(self):          return self.email

forms.py




from django import forms  from django.contrib.auth import get_user_model    User=get_user_model()  class GuestCheckoutForm(forms.Form):      email = forms.EmailField()      email2 = forms.EmailField(label='Verify Email')      def clean_email2(self):          email = self.cleaned_data.get("email")          email2 = self.cleaned_data.get("email2")          if email == email2:              user_exists = User.objects.filter(email=email).count()              if user_exists != 0:                  raise forms.ValidationError("User already exists. Please login instead")              return email2          else:              raise forms.ValidationError("Please confirm emails addresses are the same.")

In my cart views this is how I've rendered my form.

def post(self, request, *args, **kwargs):          self.object = self.get_object()          form = self.get_form()          if form.is_valid():              email = form.cleaned_data.get("email")              user_checkout = UserCheckout.objects.create(email=email)              return self.form_valid(form)          else:              return self.form_invalid(form)

I've registered the model with admin and in admin it shows the error for duplication perfectly fine but from frontend I am getting error below:

IntegrityError at /checkout/  column email is not unique  Request Method: POST  Request URL:    http://localhost:8000/checkout/  Django Version: 1.8.13  Exception Type: IntegrityError  Exception Value:      column email is not unique  Exception Location: C:\Users\Ali\ecomm\lib\site-packages\django\db\backends\sqlite3\base.py in execute, line 318  Python Executable:  C:\Users\Ali\ecomm\Scripts\python.EXE  Python Version: 2.7.9

Please advise.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/b85b393e-1164-4d81-9269-5db4b287d64f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment