使用AbstractUser
和AbstractBaseUser
看起来非常相似。
from django.contrib.auth.models import AbstractUser, AbstractBaseUser
两者有什么区别?
答案 0 :(得分:53)
documentation完全解释了这一点。 AbstractUser
是一个完整的用户模型,包含字段,作为抽象类,以便您可以继承它并添加自己的配置文件字段和方法。 AbstractBaseUser
仅包含身份验证功能,但不包含实际字段:您必须在子类化时提供它们。
答案 1 :(得分:14)
AbstractUser基本上只是您可能习惯使用的“用户”类。 AbstractBaseUser做出的假设较少,您必须告诉它哪个字段代表用户名,需要哪些字段以及如何管理这些用户。
如果您只是向现有用户添加内容(即带有额外字段的配置文件数据),则使用AbstractUser,因为它更简单,更容易。如果您想重新考虑Django关于身份验证的一些假设,那么AbstractBaseUser将为您提供这样做的能力。