因此,我有这个帐户,其中有两种类型的用户示例:实习生和HR主管。所以我的模型是
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)都有三个实习生,可以说,萨姆(Sam),大卫(David),凯蒂(Katty)在爱丽丝(Alice)和德雷克(Drake)下工作,泰勒(Taylor)和尼克(Nik)在鲍勃(Bob)下工作。
现在,我想让Bob只看到他的实习生,而Alice只能看到她的实习生,所以我是新来的人,正在学习django与此相关的任何建议,因为我无法找到解决方法。 谢谢
答案 0 :(得分:0)
您可以在一个模型中拥有一切
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