Загрузка данных


# Импортируем 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']