from django.db import models from django.contrib.auth.models import AbstractUser, UserManager from django.contrib.postgres import fields as pgfields from django.utils.translation import gettext_lazy as _ class User(AbstractUser): ROLE_CHOICES = ( (0, 'пользователь'), (1, 'автор'), (2, 'администратор'), ) GENDER_CHOICES = ( ('n', 'не указан'), ('m', 'Мужчина'), ('f', 'Женщина'), ) email = models.EmailField(_('email address'), unique=True) role = models.PositiveSmallIntegerField('Роль', default=0, choices=ROLE_CHOICES) gender = models.CharField('Пол', max_length=1, choices=GENDER_CHOICES) country = models.CharField('Страна', max_length=50, default='') city = models.CharField('Город', max_length=85, default='') about = models.CharField('О себе', max_length=1000, default='') instagram = models.URLField(default='') facebook = models.URLField(default='') twitter = models.URLField(default='') pinterest = models.URLField(default='') youtube = models.URLField(default='') vkontakte = models.URLField('ВКонтакте', default='') fb_id = models.PositiveIntegerField(null=True, blank=True, unique=True) fb_data = pgfields.JSONField(default={}) is_email_proved = models.BooleanField('Верифицирован по email', default=False) USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['username']