2012-03-12 54 views
0

我有以下情況:一個項目可能屬於多個部門,員工被分配到多個項目的角色。如何在模板中顯示角色字段? employees.role顯示空白...DJANGO:在模板中顯示多對多附加字段

模型

class Projects(models.Model): 
    name = models.CharField(max_length=20) 

class Department(models.Model): 
    name = models.CharField(max_length=20) 

class Employees(models.Model): 
    fname = models.CharField(max_length=15) 

class Departmentprojects(models.Model): 
    department = models.ForeignKey(Department) 
    projects = models.ForeignKey(Projects) 
    members = models.ManyToManyField(Employee, through='Membership') 

class Membership(models.Model): 
    departmentprojects = models.ForeignKey(Departmentprojects) 
    employee = models.ForeignKey(Employee) 
    role = models.CharField(max_length=20) #i want to show this field in a template 

VIEW

def department_detail(request, company_id): 
department = get_object_or_404(Department, pk=department_id) 
return render_to_response('test/detail.html', {'department': department}) 

模板

<h1>{{ department.name }}</h1> 

{% for projects in department.departmentprojects_set.all %} 
    <h2>{{ projects.projects }}</h2> 
     <ul> 
      {% for employees in projects.members.all %} 
       <li>{{ employee }} | {{ employee.role }}</li> 
      {% endfor %} 
     </ul> 
{% endfor %} 
+1

您的'員工'在模板中的一個地方,'員工'在另一個地方。 – 2012-03-12 23:46:57

回答

4

遍歷 「通過」 的模式,而不是目標模型:

{% for membership in projects.membership_set.all %} 
<li> 
    {{ membership.employee }} | {{ membership.role }} 
</li> 
{% endfor %} 
+0

我使用{%for projects.membership_set.all%}來解決此問題,而不是使用{%爲projects.members.all%中的員工}。不知道有什麼區別,但它的工作! – thedeepfield 2012-03-13 00:27:48