将Mulit用户配置文件链接在一起



所以我有这个账户,我有两种类型的用户,例如:实习生和人力资源主管。所以我的模型是

class User(AbstractUser):
is_intern = models.BooleanField(default=True)
class InternProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, 
related_name='intern_profile')
bio = models.CharField(max_length=30, blank=True)
location = models.CharField(max_length=30, blank=True)
SuperVisor= models.ForeignKey(HRProfile, null=True, 
related_name='employee')
class HRProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, related_name='hr_profile')
company_name = models.CharField(max_length=100, blank=True)
website = models.CharField(max_length=100, blank=True)

现在让我们假设我有两个人力资源经理,他们分别叫Alice和Bob。爱丽丝和鲍勃都有三名实习生在他们下面工作,比如山姆、大卫、凯蒂在爱丽丝手下工作,德雷克在泰勒和尼克在鲍勃手下工作。

现在我只想让Bob见他的实习生,而Alice只能见她的实习生,而不能反过来,所以伙计们,我是新来的,正在学习django任何与此相关的建议,因为我找不到解决这个问题的方法。谢谢

您可以在一个模型中拥有所有内容

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
supervisor = models.ForeignKey(
'self', null=True, blank=True, on_delete=models.SET_NULL,
related_name='interns')
def is_supervisor(self):
if not self.supervisor:
return True
return False
def is_intern(self):
if not self.supervisor:
return False
return True

在您的视图或任何函数中,您只需检查用户是否是主管,然后查询他的实习生。

if obj.is_supervisor():
interns = obj.interns.all()

if obj.is_intern():
supervisor = obj.supervisor

最新更新