2011-06-10 172 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> 
相关问题