我的项目的架构图可以在这里查看。
- 我有一个员工,他的父母是 django 用户。
- 员工与公司有关。一家公司可以有很多员工。
- 一个员工可以有某些任务,每个任务都有许多员工在处理它。因此,m2m 关系由名为 Emp_relatedTo_Task 的表关联。
对于某个视图,我想获取登录用户的所有任务、与这些任务相关的公司以及在这些公司工作的员工。
到目前为止,我取得的成就是:
emp = request.user.get_profile # get_profile fetches employee
tasks_to_emp = Task.objects.filter(employee = emp).values_list("id")
user_list = EmployeeTask.objects.filter(task__in = tasks_to_emp).values_list("user")
employees = Employee.objects.filter(id__in = user_list)
company = [employee.company for employee in employees]
company = set(company)
这是一种业余且效率较低的执行任务的方式。我研究了 select_related() 但这也只获取外键属性。有什么好的建议可以尽可能高效地完成这项任务吗?