Подтвердить что ты не робот

Разница между AbstractUser и AbstractBaseUser в Django?

Использование AbstractUser и AbstractBaseUser выглядит довольно похоже.

from django.contrib.auth.models import AbstractUser, AbstractBaseUser

В чем разница между двумя?

4b9b3361

Ответ 1

Документация полностью объясняет это. AbstractUser - это полная модель пользователя, в комплекте с полями, как абстрактный класс, чтобы вы могли наследовать его и добавлять свои собственные поля профиля и методы. AbstractBaseUser содержит только функции аутентификации, но не содержит никаких фактических полей: вы должны предоставить их при подклассе.

Ответ 2

The AbstractUser - это в основном просто класс "Пользователь", к которому вы, вероятно, уже привыкли. AbstractBaseUser делает меньше предположений, и вам нужно сказать, какое поле представляет имя пользователя, какие поля необходимы и как управлять этими пользователями.

Если вы просто добавляете вещи существующему пользователю (т.е. данные профиля с дополнительными полями), используйте AbstractUser, потому что это проще и проще. Если вы хотите переосмыслить некоторые предположения Django об аутентификации, то AbstractBaseUser дает вам возможность сделать это.