使用不同的配置文件扩展用户模型

时间:2014-01-29 08:36:49

标签: django django-users

我有一个应用程序,其中登录系统的用户数量不会超过10或15.我有两种类型的用户 - 前台用户和医生类型。它们都有一些共同的领域和一些独特的领域。例如,医生可能有一个像有氧运动或儿科医生等的领域.django推荐的扩展用户模型的方法,我认为只对一种类型的用户进行身份验证。使用OneToOneField创建Doctor模型是否可以接受实现此方法?

class Doctor(models.Model):
    #doctor specific fields
    user = models.OneToOneField(User)

class FrontDesk(models.Model):
    #frontdesk specific fields
    user = models.OneToOneField(User)

前台以同样的方式?

我正在使用django 1.5。 Django用户模型还使用用户名在__unicode__函数中返回值。我希望用户能够看到医生的名字。所以内置功能对我来说不行。你会建议什么?

2 个答案:

答案 0 :(得分:1)

为什么不将它们与摘要结合起来:

class CommonCustomer(models.Model):
user = models.OneToOneField(User)
    #all common fields
    class Meta:
        abstract = True

class Doctor(CommonCustomer):
    #doctor specific fields
    docid = models.CharField(max_length=32)

class FrontDesk(CommonCustomer):
    #frontdesk specific fields
    fdid = models.CharField(max_length=32)

答案 1 :(得分:0)

我认为你所做的事情不会有任何问题。

您可以定义unicode函数以这种方式返回doctor或frontdesk用户的用户名:

def __unicode__(self):
    return self.user.username