【发布时间】:2014-02-02 18:18:27
【问题描述】:
AbstractUser 和 AbstractBaseUser 的用法看起来很相似。
from django.contrib.auth.models import AbstractUser, AbstractBaseUser
两者有什么区别?
【问题讨论】:
AbstractUser 和 AbstractBaseUser 的用法看起来很相似。
from django.contrib.auth.models import AbstractUser, AbstractBaseUser
两者有什么区别?
【问题讨论】:
documentation 充分解释了这一点。 AbstractUser 是一个完整的 User 模型,包含字段,作为一个抽象类,因此您可以从它继承并添加自己的配置文件字段和方法。 AbstractBaseUser 仅包含身份验证功能,但没有实际字段:您必须在子类化时提供它们。
【讨论】:
AbstractUser 基本上只是您可能已经习惯的“用户”类。 AbstractBaseUser 做的假设更少,您必须告诉它哪个字段代表用户名,需要哪些字段以及如何管理这些用户。
如果您只是向现有用户添加内容(即带有额外字段的个人资料数据),请使用 AbstractUser,因为它更简单、更容易。如果您想重新考虑 Django 关于身份验证的一些假设,那么 AbstractBaseUser 为您提供了这样做的能力。
【讨论】: