【问题标题】:Creating a custom table with a list in django template在 django 模板中创建带有列表的自定义表
【发布时间】:2010-11-22 15:56:20
【问题描述】:

我想创建一个类似于地图的表格,显示仓库中纸卷的位置、重量和状态。位置包括车道(A、B、C、D、E)和位置(1、2、3、...、13)。状态可能有 4 种情况取决于纸卷的重量,我想用不同的颜色显示它们:
1. 体重 > 700 公斤。 --- 绿色
2. 400 3. 100 4. 100

例如,代码“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(对不起,我的声誉不足以发布任何图片)

我被这个问题困扰了很长时间。有人可以帮忙吗?

非常感谢。

【问题讨论】:

    标签: django-templates


    【解决方案1】:

    你的 if 子句似乎有些低效。

    你不是很想说

    if 100 >= wt and wt < 400
    

    if 100 < wt and wt < 400
    

    (等等)?

    【讨论】:

    • 我的意思是重量在100到400公斤之间:)
    • 你的意思是如果 wt >= 100 并且 wt 相同
    • 大声抱歉,你是对的,我看错了。您写的仍然是错误的,您确实应该使用 'if 100
    【解决方案2】:

    与其在模板中完成所有逻辑,不如编写一个处理逻辑的函数,然后编写一个custom template tag 接收值并将它们传递给函数。

    【讨论】:

    • 你能给我一个处理这个问题的函数示例吗?
    • 我的实际问题是地图中出现了双块。我不能一次从权重列表(wlist)中提取值“权重”并传递给函数。在这种情况下,wlist 中的两个值一次都被传递给函数,它会导致两次双单元格,正如您在我提供的图像中看到的那样。
    • 然后将它们全部作为一个序列传递,并让函数根据需要查看最大值或总和。
    • 我不清楚。再次请给我一个例子。谢谢。
    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 2014-07-12
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多