<p>Django没有多个用户-它只有一个用户,然后根据权限用户可以做不同的事情。</p>
<p>所以,首先-django中只有一个用户类型。如果使用默认身份验证框架,则此用户的模型称为<code>User</code>,来自<code>django.contrib.auth.models</code>。</p>
<p>如果要在django中自定义用户行为,可以做三件事:</p>
<ol>
<li><p><a href="https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#authentication-backends">Customize how you authenticate them</a>。默认情况下,身份验证是使用存储密码的数据库完成的。您可以针对facebook/google等进行身份验证,也可以针对您现有的用户数据库进行身份验证—例如,如果您在Windows网络上,则可以使用ActiveDirectory进行身份验证。</p></li>
<li><p><a href="https://docs.djangoproject.com/en/1.6/topics/auth/customizing/#custom-permissions">Create custom permissions</a>,并基于这些权限,限制用户可以执行的函数。默认情况下,在每个模型上-django都会添加基本权限“可以编辑”、“可以删除”、“可以读取”。您可以创建自己的,然后检查用户是否具有这些特定权限。</p></li>
<li><p>您可以存储有关用户的额外信息,以及django通常存储的任何信息。有两种方法可以做到这一点,这取决于您需要多少定制。如果django在默认情况下提供的所有功能都对您有效,您所要做的就是存储有关用户的额外信息,您可以<a href="https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#extending-user">extend the user model</a>-在以前的版本中,这称为创建自定义配置文件。另一个选择是<a href="https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#substituting-a-custom-user-model">create your own ^{<cd1>} model</a>,如果您想要更深入的定制。自定义用户模型最常见的用法是,如果要使用电子邮件地址作为用户名。</p></li>
</ol>
<p>你不必做这三件事,事实上,有时候你只需要存储一些额外的信息,或者让他们使用他们的电子邮件地址进行身份验证;在一些应用程序中,你必须修改这三个位置。</p>
<p>在您的例子中,由于您只想存储有关用户的额外信息,因此需要通过创建引用<code>User</code>的模型来<a href="https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#extending-user">extend the user model</a>(注意:您不是从<code>User</code>继承的):</p>
<pre><code>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.
</code></pre>