我想在django创建多个用户。我想知道哪种方法最好。。
class Teachers(models.Model):
user = models.ForeignKey(User)
is_teacher = models.BooleanField(default=True)
.......
或者我应该用。。
class Teacher(User):
is_teacher = models.BooleanField(default=True)
.......
或者我必须定制用户模型。。。 哪个对创建多类型用户有好处。。。??
我在Django 1.7中遵循的一种方法(也适用于1.6)是将
AbstractUser
子类化要使用您的模型,您需要将其设置为在
settings.py
中用于身份验证的模型:还要注意,现在在引用时必须使用
settings.AUTH_USER_MODEL
你的新模型中的关系。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 ^{} model ,如果您想要更深入的定制。自定义用户模型最常见的用法是,如果要使用电子邮件地址作为用户名。
你不必做这三件事,事实上,有时候你只需要存储一些额外的信息,或者让他们使用他们的电子邮件地址进行身份验证;在一些应用程序中,你必须修改这三个位置。
在您的例子中,由于您只想存储有关用户的额外信息,因此需要通过创建引用
User
的模型来extend the user model(注意:您不是从User
继承的):相关问题 更多 >
编程相关推荐