Django 1.5+允许我们向用户添加自定义字段。我想利用这个事实,但是我不一定知道什么是好的做法。在这种情况下,我对如何处理模型感到困惑。
如果可以将字段添加到User
中,那么如果一个项目只有一种类型的User
(可以说是Student
模型),我可以简单地将学生特定的字段添加到User
中吗?我是Django的新手,但我相信替代方法是设置常规User
设置,创建Student
模型,并在其中创建一个一对一的唯一字段来调用用户。
即使保证项目只有一种类型的用户,您是否也应该扩展Django User
的字段来模拟模型的字段?
最佳答案
如果您只有一种类型的用户,并且正在使用Django 1.5+,则建议您使用新的AbstractUser。 Extending Django's default user
例如,您要添加生日和喜欢的颜色:
#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。
还要注意,无论哪种情况,都需要reference your user model by using settings.AUTH_USER_MODEL。
使用上面的示例并假设在其中定义了应用程序,称为
myusers
:#settings.py
AUTH_USER_MODEL = 'myusers.MyUser'
您提到的创建与User模型具有一对一字段的Student模型的方法仍然有效,但并不干净(在某些情况下,如果您有多种用户,这是有意义的)。
我通常不喜欢引用书中的答案,但是我发现USER模型的第16章Two Scoops of Django's给出了比当前在线Django文档版本更合适的选项的更清晰的解释。总体而言,这本书是Django的非常有用的介绍,它是基于1.5编写的。不过,您必须要买书或找有书的人……(仅供引用:我没有钱推荐这本书)。
您也可以查看以下SO问题/答案:https://stackoverflow.com/a/14104748/307293
关于python - Django 1.5 +用户模型关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16880461/