我是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)
这适用于一个用户类型的用户。但是现在我正在构建一个拥有两种类型用户(自由职业者和客户)的应用程序,完成这项工作的最佳方法是什么。两个用户都将拥有不同的视图和信息。我应该:
答案 0 :(得分:2)
您应该只需要使用Groups Django机制 - 您需要创建两个组freelancer
并说出common
并检查用户是在第一组还是第二组 - 然后向他显示图
要检查用户是否在群组中,您可以使用
User.objects.filter(pk=userId, groups__name='freelancer').exists()
答案 1 :(得分:0)
你可以试试这个:
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中获得任意数量的用户。
答案 2 :(得分:0)
您可以尝试像这样扩展默认的Django Auth用户 使用帐户或您喜欢的任何名称创建一个应用,然后在models.py中输入如下内容
class User(AbstractUser):
is_head = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
is_public = models.BooleanField(default=False)
在Settings.py中添加Auth扩展模型
AUTH_USER_MODEL = 'accounts.User'
迁移您的“帐户”应用后,您都已经设置了“用户扩展模型”。