使用django模板中的列表创建自定义表

时间:2010-11-22 15:56:21

标签: django-templates

我想创建一个像地图一样的表格,显示仓库中纸卷的位置,重量和状态。位置包括车道(A,B,C,D,E)和位置(1,2,3,...,13)。状态可以在4种情况下取​​决于纸卷的重量,我想以不同的颜色显示它们:
1.重量> 700公斤。 ---绿色 2. 400<重量< 700公斤。 ---蓝
3. 100<重量< 400公斤---黄色 4. 100<重量kgs。 ---红色

例如,代码“AAA111”的2个纸卷位于B-4和B-9;分别重300和500公斤。所以在地图中应该在B-4显示黄色,在B-9显示蓝色。

我尝试使用模板中的“for”标记(例如inventory.html)从列表中创建表格。以下是相关列表,包括位置列表(posb),位置列表(mstr)和权重列表(wlist):
posb = ['1','2','3','4','5','6','7','8','9','10','11','12' ,'13' ]
mstr = [(u'B',4L),(u'B',9L)]
wlist = [300,500]

以下是inventory.html中车道B的相关代码行

        {% for pos in posb %}

        {% if pos %}

            {% if "'B', "|add:pos in mstr %}

                {% for wt in wlist %}

                    {% if wt > 700 %}

                        <td class="green">{{ wt }}</td>

                    {% endif %}

                    {% if 400 < wt and wt < 700 %}

                        <td class="blue">{{ wt }}</td>

                    {% endif %}

                    {% if 100 < wt and wt < 400 %}

                        <td class="yellow">{{ wt }}</td>

                    {% endif %}

                    {% if wt < 100 %}

                        <td class="red">{{ wt }}</td>

                    {% endif %}

                {% endfor %}

            {% else %}

                <td class="gray"></td>

            {% endif %}

        {% else %}

            <td></td>

        {% endif %}

    {% endfor %}

问题是此代码将根据wlist中的项目数创建超出表格单元格。请看以下链接后的图片:link text(抱歉,我的声誉不足以发布任何图片)

我长期坚持这个问题。有人可以帮忙吗?

非常感谢。

2 个答案:

答案 0 :(得分:0)

你的if条款似乎有些低效。

你不是意味着

if 100 >= wt and wt < 400

大于

if 100 < wt and wt < 400

(等等)?

答案 1 :(得分:0)

不是在模板中执行所有逻辑,而是编写处理逻辑的函数,然后编写接收值并将它们传递给函数的custom template tag,这样更容易。