2015-08-27 40 views
0

模型Django的製作原料查詢SQL

class Member(models.Model): 
    id_unit = models.ForeignKey(Unit) 
    id_fleet = models.ForeignKey(Fleet) 

    def __str__(self): 
     return str(self.id_fleet) 

views.py

def fleet_member_view(request): 
     cursor = connection.cursor() 
     cursor.execute("select fleet_member.id_fleet_id, array_to_string(array_agg(fleet_member.id_unit_id),',') as id_unit 
      from fleet_member, setup_unit 
      where fleet_member.id_unit_id = setup_unit.id group by fleet_member.id_fleet_id") 
     row = cursor.fetchone() 
     return render(request,'fleet_member_view.html',{'row': row}, context_instance= RequestContext(request)) 

我想在我的模板,以顯示數據

{% for post in row %} 
    <tr class="odd gradeX"> 
     <td>{{ post.id_fleet }}</td> 
     <td>{{ post.id_unit }}</td> 
    </tr> 
{% endfor %} 

,但數據不能顯示任何東西,我嘗試查詢命令行數據中的SQL顯示很好。爲什麼數據無法在模板中顯示?

回答

2

cursor.fetchone()檢索查詢結果集的下一行並返回單個序列或None

{% ifnotequal row None %} 
    <tr class="odd gradeX"> 
     <td>{{ row.0 }}</td> 
     <td>{{ row.1 }}</td> 
    </tr> 
{% endifnotequal %} 

要列出所有的結果,你應該使用cursor.fetchall()

查看

def fleet_member_view(request): 
    cursor = connection.cursor() 
    cursor.execute("select fleet_member.id_fleet_id, array_to_string(array_agg(fleet_member.id_unit_id),',') as id_unit 
     from fleet_member, setup_unit 
     where fleet_member.id_unit_id = setup_unit.id group by fleet_member.id_fleet_id") 
    row = cursor.fetchall() 
    return render(request,'fleet_member_view.html',{'row': row}, context_instance= RequestContext(request)) 

模板

{% for post in row %} 
    <tr class="odd gradeX"> 
     <td>{{ post.0 }}</td> 
     <td>{{ post.1 }}</td> 
    </tr> 
{% endfor %} 
+0

感謝答案。但我得到錯誤無效塊標記:'endfor',預期'else'或'endifnotequal' – User0511

+0

opps對不起固定 –

+0

爲什麼它總是隻顯示1行模板? – User0511