# Импортируем forms для полей формы.
from django import forms
# Импортируем UserCreationForm - готовую форму регистрации.
from django.contrib.auth.forms import UserCreationForm
# Импортируем нашу модель пользователя.
from .models import CustomUser
# Форма регистрации.
class CustomUserCreationForm(UserCreationForm):
# Email - обязательное поле.
email = forms.EmailField(
required=True,
label='Email адрес'
)
# Имя - обязательное поле.
first_name = forms.CharField(
max_length=150,
required=True,
label='Имя'
)
# Фамилия - обязательное поле.
last_name = forms.CharField(
max_length=150,
required=True,
label='Фамилия'
)
class Meta:
model = CustomUser
# password1 и password2 уже есть в UserCreationForm.
fields = ('email', 'first_name', 'last_name', 'password1', 'password2')
# Проверка уникальности email.
def clean_email(self):
email = self.cleaned_data.get('email')
if CustomUser.objects.filter(email=email).exists():
raise forms.ValidationError('Такой email уже зарегистрирован')
return email.lower()
# Сохраняем email в объект пользователя.
def save(self, commit=True):
user = super().save(commit=False)
user.email = self.cleaned_data['email']
if commit:
user.save()
return user
# Форма редактирования профиля.
class UserProfileForm(forms.ModelForm):
class Meta:
model = CustomUser
fields = ['first_name', 'last_name', 'phone', 'birth_date', 'bio']