2015-03-06 3 views
0

Я пытаюсь создать таблицу в HTML из словаря python, который имеет конечный результат, который имеет рейтинг стека.python layered dictionary to html table

Например, у менеджера может быть много или один владелец, у каждого владельца есть много или один проект, и каждый проект имеет оценку соответствия. В основном я хочу, чтобы имя менеджера в первом столбце, все владельцы менеджера во втором столбце, а затем соответствовало трем, не соответствует четвертому. Очень похоже на то, как выглядит сводная таблица в Excel

Мой view.py выглядит следующим образом:

def ownerTable(request): 
    managers = {} 

    for m in Manager.objects.all(): 
     manager = m.login 
     owners = {} 
     for o in Owner.objects.filter(manager=m): 
      projects = {} 
      owner = o.login 
      owners_compliant = 0 
      owners_noncompliant = 0 
      for p in DynamicProjectProperties.objects.filter(fieldValue=owner): 
       project = p.project 
       for pr in DynamicProjectProperties.objects.filter(project=project,fieldName='overall compliance'): 
        compliance = pr.overall_compliance 
        if compliance: 
         owners_compliant += 1 
        else: 
         owners_noncompliant += 1 
      owners[owner] = owners_compliant,owners_noncompliant 
     managers[manager] = owners 
    print managers 
    return render_to_response('managerView.html',{'managerDict':managers, 'ownersDict':owners}) 

и мой mangerView.html выглядит следующим образом:

<table> 
<tr> 
    <th id="managers"><strong>Managers</strong></th> 
    <th id="owners"><strong>Project Owners</strong></th> 
    <th id="noncompliant"><strong># of Non Compliant Projects</strong></th> 
    <th id="compliant"><strong># of Compliant Projects</strong></th> 
    <th id="total"><strong># of Projects</strong></th> 
</tr> 
{% for k,v in managerDict.items %} 
<tr> 
    <td header="managers">{{k}}</td> 
    {% for attribute in v %} 
     <td header="owners">{{attribute}}</td> 
    {% endfor %} 
</tr> 
{% endfor %} 
</table> 

Моя проблема заключается в том, что каждый владелец печатает по каждой строке вместо укладки в столбец.

Любое руководство очень ценится!

ответ

0

Я действительно смог найти решение! Это работало правильно

<table> 
 
<tr> 
 
\t <th id="managers"><strong>Managers</strong></th> 
 
\t <th id="owners"><strong>Project Owners</strong></th> 
 
\t <th id="noncompliant"><strong># of Non Compliant Projects</strong></th> 
 
\t <th id="compliant"><strong># of Compliant Projects</strong></th> 
 
\t <th id="total"><strong># of Projects</strong></th> 
 
</tr> 
 
{% for k,v in managerDict.items %} 
 
<tr> 
 
\t <td header="managers">{{k}}</td> 
 
\t {% for attribute in v.items %} 
 
\t <tr> 
 
\t \t <td></td> 
 
\t \t <td header="owners">{{attribute.0}}</td> 
 
\t \t <td>{{attribute.1.0}}</td> 
 
\t \t <td>{{attribute.1.1}}</td> 
 
\t </tr> 
 
\t {% endfor %} 
 
</tr> 
 
{% endfor %} 
 
</table>