2013-06-26 103 views
2

我在views.py文件中運行SQL查詢,並基於返回的值我需要在.html文件的列中顯示不同的數據。從python中的SQL查詢分組結果顯示在頁

如果:

CUSTOMER_ID不爲空,則詳細列應顯示CUSTOMER_ID和名稱。

如果:

CUSTOMER_ID爲空,則詳細列應顯示部門名稱和說明。

因此,數據庫中有數字。有些分配給客戶,有些分配給部門。該表的基本目的是顯示數字列表及其分配給的內容。

@render_to('customer/available_numbers.html') 
def AvailableNumbers(request): 
    cur = NumberList() 

    sql = ''' 
     SELECT 
      cpt.number, 
      cpt.call_type, 
      cpt.customer_id, 
      cpt.profile_id 
      c.name, 
      pro.department_name, 
      pro.description 
     FROM customerphonetable AS cpt 
     LEFT OUTER JOIN customer AS c 
     ON (cpt.customer_id = c.customer_id) 
     LEFT OUTER JOIN profile AS pro 
     ON (cpt.profile_id = pro.profile_id) 
     WHERE cpt.number IS NOT NULL 
     ''' 

    cur.execute(sql) 

    rows = [dictify(row) for row in cur] 

    return dict(rows=rows, cnt=len(rows)) 

def dictify(row): 
    return dict(zip([cd[0] for cd in row.cursor_description], row)) 

NumberList()連接到數據庫。

HTML文件設置爲顯示這樣的數據:

{% block content %} 
<table class ="table table-striped table-bordered"> 
    <thead> 
     <tr> 
      <th>Phone Number</th> 
      <th>Call Type</th> 
      <th>Detail</th> 
     </tr> 
    </thead> 
    <tbody> 
    {% for row in rows %} 
     <tr> 
      <td>{{ row.number }}</td> 
      <td>{{ row.call_type }}</td> 
      <td>{{ ???? }}</td> 
     </tr> 
    {% endfor %} 
    </tbody> 
</table> 

我已經測試SQL查詢並從數據庫中提取正確的數據。我迷失於如何篩選結果並根據標準正確顯示輸出。

有什麼建議嗎?如果我缺少任何信息,請告訴我。謝謝。

+0

我猜你正在使用MySQLdb的吧?這是Django? – PepperoniPizza

+0

我想這會有所幫助。它是Microsoft SQL Server,是的,Django – avaholic

回答

2

你可以嘗試這樣的事情:

{% for row in rows %} 
    <tr> 
     <td>{{ row.number }}</td> 
     <td>{{ row.call_type }}</td> 
     {% if row.customer_id %} 
      <td>{{ row.costumer_id }}</td> 
     {% else %} 
      <td>{{ row.department_name }}{{ row.description }}</td> 
     {% endif %} 
     <td>{{ ???? }}</td> 
    </tr> 
{% endfor %} 

什麼框架或ORM,如果有的話,您使用的是我不知道,但你可以與類似的變嘗試:

{% ifequal row.costumer_id NULL %} 
{% ifequal row.costumer_id None %} 
... 
+0

Argh。我試圖在view.py文件中做一些事情,並且只需在.html文件中做到這一點就可以了。非常感謝你,這麼清楚和容易! – avaholic

1

這似乎這樣的伎倆感謝PepperoniPizza:

{% for row in rows %} 
     <tr> 
      <td>{{ row.number }}</td> 
      <td>{{ row.call_type }}</td> 
      {% if row.customer_id == None %} 
       <td>{{ row.department_name }}, {{ row.description }}</td> 
      {% else %} 
       <td>{{ row.customer_id }}, {{ row.name }}</td> 
      {% endif %} 
     </tr> 
{% end for %}