Django中的多种用户类型

发布于 2021-01-29 16:47:13

我是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. 如果我决定使用一个应用程序并为其建模,如何将用户类型添加到用户配置文件中。请我需要逐步的初学者方法,或指向相关资源的链接。谢谢。
关注者
0
被浏览
42
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以尝试以下方法:

    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中拥有任意数量的用户。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看