2012-03-05 28 views
0

我的项目的模式图可以查看HERE在用户系统中获取数据的pythonic方式

  1. 我有一个员工是父母是django用户。
  2. 雇员与公司有关。一个公司可以有很多员工。
  3. 员工可以有特定的任务,每个任务都有许多员工在工作。因此,一个由名为Emp_relatedTo_Task的表关联的m2m关系。

对于某个视图,我想获取登录用户,与这些任务相关的公司以及在这些公司工作的员工的所有任务。

我所取得的成就这一步就是:

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(),但它也只提取了外键属性。任何建议尽可能有效地完成这项任务?

回答

0

你忘了提什么是project但假设一个项目的任务列表:

emp = Employee.objects.get(id=1) # example employee 

# All employees that work for the same company as this employee 
company_employees = Employee.objects.filter(company=emp.company) 

# List of tasks for this employee, if your FK in Employee is called `task` 
emp_tasks = Employee.task_set.all() 

# The company for this employee 
company = emp.company 
相关问题