假设你有一个应用程序,不同类型的用户可以注册:公司、律师和客户。公司有许多律师;律师有许多客户。当然,公司用户的视图与律师用户的视图不同;两者与客户用户也不同。
你会如何建立这三种不同的用户模型?我可以想到以下方法:
三个不同的模型,每个模型都有一个指向“用户”(User)的外键,每个模型都有自己的字段,例如:
现在,您可以创建一个单独的模型作为咨询,使用两个
这种方法使得很难区分用户。例如,您如何知道
您还可以仅向
您该如何解决这个问题呢?
你会如何建立这三种不同的用户模型?我可以想到以下方法:
三个不同的模型,每个模型都有一个指向“用户”(User)的外键,每个模型都有自己的字段,例如:
class Firm(models.Model):
user = models.ForeignKey(User)
class Lawyer(models.Model):
user = models.ForeignKey(User)
specialty = models.CharField(max_length=100)
class Client(models.Model)
user = modelsForeignKey(User)
现在,您可以创建一个单独的模型作为咨询,使用两个
ForeignKeys
:一个指向律师
,另一个指向客户
。您还可以通过创建一个带有指向Consultation
的ForeignKey
的模型Resource
来向咨询添加资源(例如文档或其他东西)。这种方法使得很难区分用户。例如,您如何知道
user
是Firm
?您需要多次查询数据库或将Profile
分配给通用的User
对象。您还可以仅向
User
添加一个Profile
并包含一个Role
,然后根据user.get_profile().role
对视图和身份验证进行渠道处理。您该如何解决这个问题呢?