什么时候我应该使用Django的用户模型?

时间:2014-10-27 21:11:36

标签: python django django-models

我创建了这个类Person,但是看看Django User模型它们看起来非常相似。 在这种情况下,我应该使用它吗?或者我应该保留自己的模型?

我主要担心的是,我不希望我的用户登录localhost:8000/admin页面并开始弄乱我的系统和其他用户数据。

class Person(models.Model):

    full_name = CharField(max_length=255)
    address = CharField(max_length=255)
    city = CharField(max_length=255)
    country = CharField(max_length=2, choices=CountryChoices, default='')
    gender = CharField(max_length=1, choices=GenderChoices, default='')

    email = EmailField()
    password = CharField(max_length=255)

    started = DateTimeField(auto_now_add=True, auto_now=False)
    updated = DateTimeField(auto_now_add=False, auto_now=True)

    #how it's show in admin
    def __unicode__(self):
        return smart_unicode(self.full_name + ' (' + self.email + ')')

3 个答案:

答案 0 :(得分:3)

您应该创建此模型。除了对效率的任何考虑之外,看起来好像是以明文形式存储密码,这绝对不是。

相反,扩展AbstractBaseUser并将AUTH_USER_MODEL设置为指向该模型。如果您定义了is_staff布尔字段,则只要将该字段设置为False,就不允许您的用户登录管理站点。

答案 1 :(得分:1)

如果您不想让用户访问管理员,那么使用此处包含的模型并没有错。

如果您想使用auth用户模型,您当然可以。如果您希望稍后将User模型添加到模型中,可以使用ForeignKey将它们绑定在一起。

答案 2 :(得分:1)

这是错的。该字段中的某些字段位于User模型中。最好使用User模型并在模型中定义aditional字段。看看Storing additional information about users

您也可以开发自己的登录系统,如this