我创建了这个类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 + ')')
答案 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。