Ich arbeite an meiner Checkout-Ansicht mit regulären/Gast-Benutzer, aber es wird schwer, um die Integrität Fehler zu kommen. Idee ist es, Gastbenutzer mit E-Mail nur zur Kasse zu gehen und ich muss die Benutzer-E-Mail eindeutig festlegen.Django IntegrityError E-Mail ist nicht eindeutig
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 den Warenkorb sieht dies ist, wie ich meine Form gemacht habe.
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)
Ich habe das Modell mit Admin und Admin registriert es zeigt den Fehler für die Vervielfältigung völlig in Ordnung, aber vom Frontend bin ich Fehler immer unter:
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
Wenn ich richtig verstehe, ist Ihre Form gültig, wenn es nicht sollte, und es resultiert ein 'IntegrityError'? – aumo
Alles, was ich vorhabe, ist, dass, wenn der Benutzer bereits existiert, die Meldung angezeigt werden sollte, um sich einzuloggen, anstatt sich zu registrieren. –