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

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

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

  1. Proxy-модель - если нужно только добавить методы, не меняя структуру БД:
python
from django.contrib.auth.models import User

class ProxyUser(User):
    class Meta:
        proxy = True

    def get_full_name(self):
        return f"{self.first_name} {self.last_name}"
  1. OneToOne связь (профиль) - когда нужно добавить дополнительные поля:
python
from django.contrib.auth.models import User

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField()
avatar = models.ImageField()

text

3. **Наследование от AbstractUser** - если нужно добавить поля в саму модель пользователя:
```python
from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    phone = models.CharField(max_length=20)
    birth_date = models.DateField(null=True)
  1. Наследование от AbstractBaseUser - полная кастомизация, включая логин/пароль:
python
from django.contrib.auth.models import AbstractBaseUser

class CustomUser(AbstractBaseUser):
    email = models.EmailField(unique=True)
    # другие поля...

Выбор зависит от требований: минимальные изменения - proxy, дополнительные поля - OneToOne, кастомизация аутентификации - AbstractBaseUser.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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