实际上,我正在开展一个项目,我需要保存每个用户的名称,用户名,密码,年龄,性别等详细信息。
在该网站中,任何用户都可以登录其帐户,编辑信息。
我应该使用默认用户模型还是创建新模型
答案 0 :(得分:2)
我建议您继承AbstractUser
。如果你对Django的User
字段很好,但是需要额外的字段,这个选项是合适的。 Django documentation也建议这样做。
如果您正在开始一个新项目,强烈建议您设置一个 自定义用户模型,即使默认用户模型足够 您。此模型的行为与默认用户模型相同,但是 如果需要,您将来可以自定义它:
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
pass or additional fields here ...
您还必须在设置中指向此模型之前创建或运行任何迁移:
AUTH_USER_MODEL = 'yourapp.User'
答案 1 :(得分:0)
Django中的默认用户模型保存了一个用户的一些有限字段。字段是
first_name, last_name, email, password, groups, user_permissions, is_staff, is_active, is_superuser, last_login, date_joined
如果您想保存用户的其他信息,如生日,专业知识,性别,您必须编写userprofile模型,该模型必须与用户一对一链接。
示例:
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OnetoOneField(User)
birthday = models.DateTimeField(default=datetime.datetime.now)
skills = models.CharField(max_length=128)
答案 2 :(得分:0)
实际上,如果您想为用户创建自定义用户模型,请参阅Django官方documentation中提到的用户模型。为了实现这一点,您必须首先使用AbstractUser类继承自定义用户模型,然后通过提及
将该自定义用户指向您的设置文件中AUTH_USER_MODEL =' mycustom_user_app.MyCustomUser' 。
现在django内部知道哪个模型是项目的User模型,您可以访问自定义用户的所有模型管理器(例如create_user等)。通过这种方式,您可以使用当前模型字段,还可以向其中添加更多字段。如文档中所述,这是合法的方式和自定义用户模型