Django中的多种用户类型


问题内容

我是Django的新手,正在尝试创建具有两种用户类型(自由职业者和客户)的应用。我了解如何创建用户个人资料类,并且对我来说效果很好:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    description = models.CharField(max_length=100, default='')
    country = models.CharField(max_length=100, default='')
    website = models.URLField(default='')
    phone = models.IntegerField(default=0)

def create_profile(sender, **kwargs):
    if kwargs['created']:
        user_profile = UserProfile.objects.create(user=kwargs['instance'])


post_save.connect(create_profile, sender=User)

对于一个用户类型的用户,这对我来说效果很好。但是,现在我正在构建具有两种类型的用户(自由职业者和客户)的应用程序,什么是完成此任务的最佳方法?这两个用户将具有不同的视图和信息。我是不是该:

  1. 创建2个不同的应用程序,然后分别进行正常注册和登录。
  2. 如果执行上述操作,希望自由职业者登录后不会访问客户视图。
  3. 如果我决定使用一个应用程序并为其建模,如何将用户类型添加到用户配置文件中。请我需要逐步的初学者方法,或指向相关资源的链接。谢谢。

问题答案:

您可以尝试以下方法:

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    #define general fields

class Freelancer(models.Model):
    profile = models.ForeignKey(UserProfile)
    #freelancer specific  fields

    class Meta:
        db_table = 'freelancer'

class Customers(models.Model):
    profile = models.ForeignKey(UserProfile)
    #customer specific fields

   class Meta:
        db_table = 'customer'

然后,您可以从UserProfile中拥有任意数量的用户。