Этот метод не сделает поле электронной почты уникальным на уровне базы данных, но его стоит попробовать.
Использовать пользовательский валидатор :
from django.core.exceptions import ValidationError
from django.contrib.auth.models import User
def validate_email_unique(value):
exists = User.objects.filter(username=value)
if exists:
raise ValidationError("Email address %s already exits, must be unique" % value)
Тогда в forms.py:
from django.contrib.auth.models import User
from django.forms import ModelForm
from main.validators import validate_email_unique
class UserForm(ModelForm):
#....
email = forms.CharField(required=True, validators=[validate_email_unique])
#....