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+unsubscr...@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.

Reply via email to