我应该在django 1.11中为我的项目使用默认用户模型

时间:2017-12-17 09:20:14

标签: django django-models django-admin

实际上,我正在开展一个项目,我需要保存每个用户的名称,用户名,密码,年龄,性别等详细信息。

在该网站中,任何用户都可以登录其帐户,编辑信息。

我应该使用默认用户模型还是创建新模型

3 个答案:

答案 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等)。通过这种方式,您可以使用当前模型字段,还可以向其中添加更多字段。如文档中所述,这是合法的方式和自定义用户模型