Сделал кастомную модель пользователя, где авторизация в django происходит по email, а не по логину.
# users/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
email = models.EmailField(unique=True)
Форма регистрации пользователя
# users/forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = CustomUser
fields = ('email',) # new
class CustomUserChangeForm(UserChangeForm):
class Meta:
model = CustomUser
fields = ('email', ) # new
Авторизацию вк использую через django-social-auth. Проблема заключается в том, что не у всех пользователей есть почта на странице вк и возникает ошибка Duplicate entry '' for key 'users_customuser_email
1. Как спрашивать email принудительно у пользователя.
2. Стоит ли связывать пользователей Django и пользователей вк по email?
3. Как переделать бэкэнд авторизации вк через почту, а не по логину.