2011-06-10 53 views
2

我在寫一個使用django的訂單隊列系統,我已經能夠弄清楚如何從HTML表單獲取輸入並使用模型將其存儲到sqlite數據庫中和形式。爲了從數據庫中讀取數據到一個列表我做這樣的事情Django,從字典項目列表中顯示一個HTML表格

queueList = Order.objects.filter(orderDate__isnull=True) 

(的HTML輸出{{queueList}})

凡訂購是許多屬性的模型。返回的數據看起來像這樣。

[<Order: Name: Bob, Catalog #: 32, Vendor: vendor1, Site: Site1, Entered: 2011-06-06,  Ordered: None, Received: None, Ordered By: orderee1>, <Order: Name: Jeff, Catalog #: 333, Vendor: vendor2, Site: site2, Entered: 2011-06-06, Ordered: None, Received: None, Ordered By: orderee2>] 

感覺就像會有一些簡單的內置Django的格式化此爲一個HTML表格,有點像form.as_table。有沒有簡單的方法來做到這一點?我需要顯示3個表格,首先打印出沒有訂單日期的每個字典項目,第二個是每個項目作爲orderDate但沒有receivedDate,第三個表格包含所有receivedDates。爲了構建一個表格,我將不得不切斷所有這些數據嗎?我在網上發現了一些代碼,它們嘗試了類似的東西,但是它拋出異常並且對我來說太複雜了。

回答

10

這聽起來像是使用Django templating language可以輕鬆解決的問題。

所以,在你的HTML模板文件,你可以有這樣的:

<table summary="no_orderDate"> 
<tr><th>Column 1</th><th>Column 2</th> 
{% for queue in queueList %} 
    {% if not queue.orderDate %} 
     <tr><td>{{ queue.name }}</td><td>{{ queue.catalog_num }}</td></tr> 
    {% endif %} 
{% endfor %} 
</table> 

您可能需要檢查一些語法的,但你的想法。

+0

謝謝,我現在工作得很好。有一個問題,我想在頁面(django表單)中爲表格添加一個表格,我使用

但它不覆蓋我的外部CSS文件,我如何得到這個上班? – 2011-06-10 15:07:36

+0

我將不得不看到html代碼。你可能會重寫css的表標籤,但不是行標籤或類似的東西。 – 2011-06-10 15:13:51

+0

你說得對,我需要覆蓋td標籤,但我使用django的{{form.as_table}}打印表格,我希望沒有填充,所以我不能直接把一個

,有沒有辦法在我的python文件中做到這一點? – 2011-06-10 15:19:25

2

如果我理解正確,你正在尋找只需轉儲所有的字段,而不必像ZincX的答案中寫輸出?如果是這樣,你可以做一些像下面這樣的事情,只是簡單地這樣做就意味着你失去了對輸出的控制。

# in models.py Order class 
def get_fields(self): 
    return [(field, field.value_to_string(self)) for field in Order._meta.fields] 

# in template 
<table> 
{% for queue in queueList %} 
    {% for field, value in queue.get_fields %} 
     <tr> 
      <th>{{ field }}</th> 
      <td>{{ value }}</td> 
     </tr> 
    {% endfor %} 
{% endfor %} 
</table> 
相關問題