首页 > 解决方案 > 是否可以在视图中在 Django 对象上添加新数据?

问题描述

我的问题只是问这是否可能。例如视图中的这个 QuerySet:

item_list = ItemList.objects.all()

在 item_list 中,我想添加一个要呈现到模板的 HTML 标记。

html_var = "<div> SOMETHING </div>"
item_list = item_list + html_var or something

原因:

我想根据 item_list 的索引来控制什么类型的 html 标签。我的第一个选择是在循环计数器上使用模数,但根据文档和其他人的评论,我们无法在模数运算符上获得余数。返回是一个布尔值。如果您有其他建议,请告诉我。

编辑

根据@Abdul Aziz Barkat 的建议,我在课堂上使用了循环。但是我想在顶部和底部的左侧添加,然后在顶部和底部添加右侧。

目前我是这样做的:

{% for job in item_list %}
<div class="{% cycle 'left' 'left' 'right' 'right' %}">
    <div class="{% cycle 'top' 'bottom' %}">
        <div class="item">
                <p>{{job.job_title}}</p>
        </div>
    </div>
</div>
{% endfor %}

但是结果变成了:

<div class="left">
    <div class="top">
        <div class="item">
                <p>{{job.job_title}}</p>
        </div>
    </div>
</div>
<div class="left">
    <div class="bottom">
        <div class="item">
                <p>{{job.job_title}}</p>
        </div>
    </div>
</div>
<div class="right">
    <div class="top">
        <div class="item">
                <p>{{job.job_title}}</p>
        </div>
    </div>
</div>
<div class="right">
    <div class="bottom">
        <div class="item">
                <p>{{job.job_title}}</p>
        </div>
    </div>
</div>

我希望达到的目标:

<div class="left">
    <div class="top">
        <div class="item">
                <p>{{job.job_title}}</p>
        </div>
    </div>
    <div class="bottom">
        <div class="item">
                <p>{{job.job_title}}</p>
        </div>
    </div>
</div>

<div class="right">
    <div class="top">
        <div class="item">
                <p>{{job.job_title}}</p>
        </div>
    </div>
    <div class="bottom">
        <div class="item">
                <p>{{job.job_title}}</p>
        </div>
    </div>
</div>

标签: django

解决方案


使用cycle模板标签

{% for item in item_list %}
    <div class="{% cycle 'upper-left' 'lower-left' 'upper-right' 'lower-right' %}">
        content here
    </div>
{% endfor %}

这将导致每个参数在一个循环中交替使用。


推荐阅读