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)
对于一个用户类型的用户,这对我来说效果很好。但是,现在我正在构建具有两种类型的用户(自由职业者和客户)的应用程序,什么是完成此任务的最佳方法?这两个用户将具有不同的视图和信息。我是不是该:
- 创建2个不同的应用程序,然后分别进行正常注册和登录。
- 如果执行上述操作,希望自由职业者登录后不会访问客户视图。
- 如果我决定使用一个应用程序并为其建模,如何将用户类型添加到用户配置文件中。请我需要逐步的初学者方法,或指向相关资源的链接。谢谢。
问题答案:
您可以尝试以下方法:
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中拥有任意数量的用户。