Django中AbstractUser和AbstractBaseUser的区别?

时间:2014-02-02 18:18:28

标签: django

使用AbstractUserAbstractBaseUser看起来非常相似。

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

两者有什么区别?

2 个答案:

答案 0 :(得分:53)

documentation完全解释了这一点。 AbstractUser是一个完整的用户模型,包含字段,作为抽象类,以便您可以继承它并添加自己的配置文件字段和方法。 AbstractBaseUser仅包含身份验证功能,但不包含实际字段:您必须在子类化时提供它们。

答案 1 :(得分:14)

AbstractUser基本上只是您可能习惯使用的“用户”类。 AbstractBaseUser做出的假设较少,您必须告诉它哪个字段代表用户名,需要哪些字段以及如何管理这些用户。

如果您只是向现有用户添加内容(即带有额外字段的配置文件数据),则使用AbstractUser,因为它更简单,更容易。如果您想重新考虑Django关于身份验证的一些假设,那么AbstractBaseUser将为您提供这样做的能力。