我有一个应用程序,其中登录系统的用户数量不会超过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__
函数中返回值。我希望用户能够看到医生的名字。所以内置功能对我来说不行。你会建议什么?
答案 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