2012-03-05 1 views
0

Схема схемы моего проекта может быть просмотрена HERE.Питонический способ получения данных в пользовательской системе

  1. У меня есть сотрудник, который является родителем django User.
  2. Сотрудник связан с компанией. У Компании может быть много сотрудников.
  3. Сотрудник может иметь определенные Задачи, и каждая Задача имеет много Рабочих, работающих над ним. Следовательно, отношение 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(), но это также позволяет получить атрибуты foreignkey. Любые хорошие предложения, чтобы сделать эту задачу максимально эффективной?

ответ

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 

 Смежные вопросы

  • Нет связанных вопросов^_^