Django没有多个用户——它只有一个用户,然后根据权限用户可以做不同的事情.
因此,首先-Django中只有一种用户类型.如果使用默认身份验证框架,则此用户的模型称为User
,从django.contrib.auth.models
开始.
如果您想在Django中自定义用户行为,您可以做三件事:
Customize how you authenticate them美元.默认情况下,使用存储密码的数据库进行身份验证.您可以针对Facebook/Google等进行身份验证,也可以针对现有的用户数据库进行身份验证-例如,如果您在Windows网络上,则可以使用ActiveDirectory进行身份验证.
Create custom permissions,并根据这些权限限制用户可以执行的功能.默认情况下,在每个模型上,django将添加基本权限"可以编辑"、"可以删除"、"可以阅读".您可以创建自己的,然后判断用户是否具有这些特定权限.
您可以存储有关用户的额外信息,以及Django通常存储的任何信息.有两种方法可以做到这一点,具体取决于您需要多少自定义.如果默认情况下Django提供的所有内容都对您有效,而您想要做的只是存储有关用户的额外信息,那么您可以extend the user model-在以前的版本中,这称为创建自定义配置文件.如果您想要更深层次的自定义,另一个选项是设置为create your own User
model.自定义用户模型最常见的用法是,如果您要使用邮箱地址作为用户名.
你不必同时做这三件事,事实上,有时候你只需要存储一些额外的信息,或者让他们使用他们的邮箱地址进行身份验证;在某些应用程序中,必须修改所有三个位置.
在您的情况下,因为您只想存储关于用户的extra information,所以您需要创建一个引用User
的模型(注意:您不从User
继承):
class Profile(models.Model):
user = models.OneToOneField(User)
department = models.CharField(max_length=200, default='Computer Science')
is_teacher = models.BooleanField(default=False)
is_student = models.BooleanField(default=True)
# .. etc. etc.