擅长:python、mysql、java
<p>首先,我认为这种模式更像是一个个人资料而不是用户。如果您不介意使用1.9(和postgres),那么这是JSON字段的完美用例。您可以使用常规查找进行筛选,而不需要指定每种类型。通过这种方式,您还可以扩展用户模型,使用户可以同时完成多个角色。我认为另一种方式是</p>
<pre><code>class UserProfile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
# ...
class Installer(models.Model):
profile = models.ForeignKey(UserProfile, related_name='installer')
#HERE: Specific properties for Installer Companies
class Administration(models.Model):
profile = models.ForeignKey(UserProfile, related_name='admin')
#HERE: Specific properties for Administration
class Client(models.Model):
profile = models.ForeignKey(UserProfile, related_name='client')
#HERE: Specific properties for Clients
</code></pre>