Django 1.9 prüfe ob E-Mail bereits existiert

Meine Site ist so eingerichtet, dass es keinen Benutzernamen gibt (oder vielmehr user.username = user.email). Django hat eine Fehlermeldung, wenn ein Benutzer versucht, einen Benutzernamen einzugeben, der sich bereits in der Datenbank befindet. Da ich jedoch keinen Benutzernamen für die Registrierung verwende, kann ich nicht herausfinden, wie das geht.

Genau wie die Standardeinstellungen bereits sind, möchte ich die Seite nicht erneut laden, um herauszufinden, ob bereits eine E-Mail-Adresse mit einem Benutzer verknüpft ist. Ich vermute, Ajax zu verwenden, aber ich kann nicht herausfinden, wie es geht. Ich habe mir andere Posts angesehen, aber es scheint nichts Neues zu geben.

Wie kann ich überprüfen, ob bereits eine E-Mail-Adresse vorhanden ist, und in diesem Fall dem Benutzer eine Fehlermeldung zur Eingabe einer neuen E-Mail-Adresse übermitteln?

models.py:

class MyUsers(models.Model):
    user = models.OneToOneField(User)
    first_name = models.CharField(max_length=100, blank=True)
    last_name = models.CharField(max_length=100, blank=True)
    email = models.EmailField(max_length=100, blank=True, unique=True)
    company = models.CharField(max_length=100, blank=True, null=True)
    website = models.URLField(max_length=100, blank=True, null=True)
    phone_number = models.CharField(max_length=100, blank=True, null=True)

    def __str__(self):
        return self.user.username

forms.py:

class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('email',)


class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ('first_name', 'last_name', 'company', 'website', 'phone_number')

views.py:

def index(request):
    registered = False

    if request.method == 'POST':
        user_form = UserForm(data=request.POST)
        profile_form = UserProfileForm(data=request.POST)

        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save()
            user.set_password(user.password)
            user.password = ""
            user.username = user.email
            user.save()

            profile = profile_form.save(commit=False)
            profile.user = user
            profile.email = user.email
            profile.save()

            user.first_name = profile.first_name
            user.last_name = profile.last_name
            user.save()

            registered = True
            return HttpResponseRedirect(reverse('registration'))
        else:
            print user_form.errors, profile_form.errors
    else:
        user_form = UserForm()
        profile_form = UserProfileForm1()

    context = {'user_form': user_form, 'profile_form': profile_form, 'registered': registered}
    return render(request, 'mysite/register.html', context)

register.html:

{% extends 'mysite/base.html' %}
{% load staticfiles %}

{% block title_block %}
    Register
{% endblock %}

{% block head_block %}
{% endblock %}

{% block body_block %}    
    <form id="user_form" method="post" action="/mysite/" enctype="multipart/form-data">
        {% csrf_token %}
        {{ user_form.as_p }}
        {{ profile_form.as_p }}

        <input type="submit" name="submit" value="Register" />
    </form>
{% endblock %}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage