1234567891011121314151617181920212223242526272829303132333435363738 |
- import re
- from django.contrib.auth.models import AbstractUser
- from django.core.exceptions import ValidationError
- from django.db import models
- # Валидатор, разрешающий русские и английские буквы и тире
- def validate_name(value):
- if not re.match(r'^[a-zA-Zа-яА-Я-]+$', value):
- raise ValidationError(
- 'Поле может содержать только русские/английские буквы и тире.',
- params={'value': value},
- )
- # Валидатор для номера телефона
- def validate_phone_number(value):
- if (not re.match(r'^\d+$', value)) or (len(value) < 11):
- raise ValidationError(
- 'Номер телефона должен состоять минимум из 11 цифр.',
- params={'value': value},
- )
- class ShariXUser(AbstractUser):
- last_name = models.CharField("Фамилия", max_length=150, validators=[validate_name])
- first_name = models.CharField("Имя", max_length=150, validators=[validate_name])
- middle_name = models.CharField("Отчество", max_length=150, blank=True, null=True, validators=[validate_name])
- phone_number = models.CharField("Номер телефона", max_length=13, unique=True, validators=[validate_phone_number])
- email = models.EmailField("Адрес электронной почты")
- avatar = models.ImageField("Аватар", upload_to="user_avatars/", null=True, blank=True)
- USERNAME_FIELD = 'phone_number'
- REQUIRED_FIELDS = ['first_name', 'last_name', 'username', 'email']
- def __str__(self):
- return f"{self.first_name} {self.last_name}{' ' + self.middle_name if self.middle_name else ''}"
|