Встречается на собеседованиях • сегодня

Какие знаешь варианты определения модели пользователя в Django

В Django модель пользователя можно определить несколькими способами:

  1. Использование встроенной модели User
    Стандартная модель из django.contrib.auth.models. Подходит для базовых случаев, но не расширяема.

    python
    from django.contrib.auth.models import User
  2. Расширение AbstractUser
    Позволяет добавить свои поля, сохраняя стандартные. Требует указания AUTH_USER_MODEL в settings.py.

    python
    from django.contrib.auth.models import AbstractUser
    

class CustomUser(AbstractUser):
phone = models.CharField(max_length=20)

text

3. **Расширение `AbstractBaseUser`**  
Полная кастомизация, включая замену стандартных полей (например, email вместо username).  
```python
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager

class MyUserManager(BaseUserManager):
    def create_user(self, email, password=None):
        # логика создания
        pass

class MyUser(AbstractBaseUser):
    email = models.EmailField(unique=True)
    is_active = models.BooleanField(default=True)
    objects = MyUserManager()
    USERNAME_FIELD = 'email'
  1. Связь OneToOne с User
    Дополнительная модель для хранения данных, если не нужно менять аутентификацию.
    python
    from django.contrib.auth.models import User
    
    class Profile(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE)
        bio = models.TextField()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы