1

我想覆盖默认的管理面板结果列表 (change_list_results.html) 为每一行添加 ID<tr>

默认为:

<tbody>
        {% for result in results %}
            {% if result.form.non_field_errors %}
                <tr><td colspan="{{ result|length }}">{{ result.form.non_field_errors }}</td></tr>
            {% endif %}
            <tr class="{% cycle 'row1' 'row2' %}">{% for item in result %}{{ item }}{% endfor %}</tr>
        {% endfor %}
 </tbody>

我想拥有:

<tbody>
        {% for result in results %}
            {% if result.form.non_field_errors %}
                <tr><td colspan="{{ result|length }}">{{ result.form.non_field_errors }}</td></tr>
            {% endif %}
            <tr class="{% cycle 'row1' 'row2' %}" id="{{ ID }}">{% for item in result %}{{ item }}{% endfor %}</tr>
        {% endfor %}
</tbody>

我应该投入什么{{ ID }}来获取元素 ID?

4

2 回答 2

1

不幸的是,“项目”上下文变量不保存实例数据,它只是一个包含每列的 html 的列表。为了实现您的需要,您必须根据 forloop 计数器在 'cl.result_list' 上下文变量中搜索等效项:

<tr class="{% cycle 'row1' 'row2' %}" id="{% with i=forloop.counter0|stringformat:"s"|add:":" %}{% with items=cl.result_list|slice:i %}{{ items.0.pk }}{% endwith  %}{% endwith %}">{% for item in result %}{{ item }}{% endfor %}</tr>

或者,如果您不喜欢所有这些“with”标签,您可以创建一个自定义模板以直接从计数器索引中获取“cl.result_list”中的项目。

于 2012-11-17T20:06:32.370 回答
0

我猜从一个附加到列表{{ result.form.instance.id }}的事实来看。result.formresults

只是演绎推理。让我知道它是否错了。

于 2012-11-17T18:14:34.607 回答