如果您只有一种类型的用户并且使用的是 Django 1.5+,我建议您利用新的 AbstractUser。扩展 Django 的默认用户
例如,您要添加出生日期和喜欢的颜色:
#myusers/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class MyUser(AbstractUser):
dob = models.DateField()
favorite_color = models.CharField(max_length=32, default='Blue')
如果您需要更大的灵活性,您可以扩展 AbstractBaseUser 而不是 AbstractUser,但对于大多数基本情况,您应该只需要 AbstractUser。
另请注意,在任何一种情况下,您都需要使用 settings.AUTH_USER_MODEL 来引用您的用户模型。
使用上面的示例并假设定义它的应用程序被调用myusers
:
#settings.py
AUTH_USER_MODEL = 'myusers.MyUser'
您提到的创建具有与 User 模型一对一字段的 Student 模型的方法仍然有效,但不是那么干净(如果您有多种用户,仍然存在这种情况)。
我通常不喜欢在答案中参考书籍,但我发现Django 的两个勺子,关于用户模型的第 16 章比当前版本的在线 Django 文档更清楚地解释了不同选项的适用性。这本书总体上是对 Django 非常有用的介绍,是基于 1.5 编写的。不过,您必须购买这本书或找到拥有它的人……(仅供参考:我没有任何钱推荐此书)。
您还可以看看这个 SO 问题/答案:https ://stackoverflow.com/a/14104748/307293