使用Django 1.5,自定义字段和共享身份验证的多个用户类型

时间:2013-10-12 19:02:43

标签: python django django-models django-registration

我正在使用这些模型开发一个Django应用程序:

class GenericUser(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(max_length=254, unique=True)
    ....

class Usertype1(GenericUser):
    phone = models.CharField(max_length=20, blank=False)
    ....

class Usertype2(GenericUser):
    mobile = models.CharField(max_length=20, blank=False)
    ....

我正在使用django-registration。每个用户都有自己的注册模板,我已经解决了这个问题。 GenericUser只有基本的公共字段,没有任何注册模板。我正在使用它作为主要的Auth模型。

当我尝试注册为Usertype1或Usertype2的新用户时出现问题。 Django退回并创建一个新的GenericUser元素,而不在Usertype1 / 2表中做任何事情。我的问题是:我是否需要做其他事来创建Usertype寄存器?我想我错过了什么。

1 个答案:

答案 0 :(得分:1)

Django仅支持一个身份验证用户。对您的情况最好的解决方案是使用具有两个字段的默认用户:

phone = models.CharField(max_length=20, blank=False)
mobile = models.CharField(max_length=20, blank=False)

并制作表单以验证您需要手机还是手机。另一种选择是:

phone = models.CharField(max_length=20, blank=False)
is_mobile = models.BoleanField()

并使用is_mobile询问用户是使用手机还是手机。

更具体的情况必须以类似的方式解决。