【发布时间】:2018-08-11 21:06:32
【问题描述】:
我试图在我的员工表中返回与用户有嵌套关系的用户列表/过滤器。例如,我有员工与他们的经理绑定,我希望能够查询该经理下的所有员工(这包括主要经理下的任何其他经理下的任何员工)。因此,如果用户 Bob 有 2 个直接下属,Sally 和 Brian。而Brian 有 2 个直接下属,Sally 有 3 个直接下属。我希望 Bob 能够看到所有 7 名员工。现在,我可以让它工作的唯一方法是通过一个可怕的序列,如下所示..我希望他们是一种更简单/更有效的方法。
manager = Employees.objects.filter(manager_id=request.user.id).values('manager')
employee_ids = list(Employees.objects.filter(manager=manager.first()['manager']).values_list('employee', flat=True))
employees = [User.objects.get(id=i).username for i in employee_ids]
grandchildren = []
for i in employees:
user_id = User.objects.get(username=i).id
child = list(Employees.objects.filter(manager=user_id).values_list('employee', flat=True))
grandchildren.append(child)
children = list(chain.from_iterable(grandchildren))
for i in children:
user_id = User.objects.get(id=i).id
child = list(Employees.objects.filter(manager=user_id).values_list('employee', flat=True))
grandchildren.append(child)
grandchildren = list(chain.from_iterable(grandchildren))
for i in grandchildren:
employees.append(User.objects.get(id=i).username)
employees = list(set(employees))
【问题讨论】:
标签: python django django-models django-orm