【问题标题】:edit django form widget rendering编辑 django 表单小部件渲染
【发布时间】:2016-07-25 16:28:05
【问题描述】:

我有一个 Django 表单,其中一个字段定义为:

widgets = {
    'name': forms.CheckboxSelectMultiple()
}

模板在循环中呈现它们:

{% for field in form %}
    <fieldset class="article-form__field">
        {{ field.label_tag }} {{ field }}
    </fieldset>
{% endfor %}

这被渲染为:

<fieldset class="article-form__field">
    <label for="category-name_0">Category:</label>
    <ul id="category-name">
        <li><label for="category-name_0"><input id="category-name_0" name="category-name" type="checkbox" value="GEN" /> General information</label></li>
        <li><label for="category-name_1"><input id="category-name_1" name="category-name" type="checkbox" value="FOO" /> Food and drinks</label></li>
    </ul>
</fieldset>

简而言之:&lt;label&gt;&lt;input&gt;&lt;/label&gt;。但是,我希望输出为&lt;label&gt;&lt;/label&gt;&lt;input&gt;

这可能吗?如果可以,怎么做?

完整代码是here

【问题讨论】:

    标签: python django django-forms jinja2 multi-model-forms


    【解决方案1】:
    {% for field in form %}
        <fieldset class="article-form__field">
        {% if field.name != "category-name" %}
            {{ field.label_tag }} {{ field }}
        {% else %}
            {{ field.label_tag }}
            <ul id={{ field.auto_id }}>
            {% for checkbox in field %}
                <li> 
                    <label for="{{ checkbox.id_for_label }}">
                        {{ checkbox.choice_label }}
                    </label>
                    {{ checkbox.tag }}
                </li>
            {% endfor %}
            </ul>
        {% endif %}
        </fieldset>
    {% endfor %}
    

    【讨论】:

    • 非常感谢!这解决了我的问题。 (在我的示例中,名称实际上是“名称”,但这是另一个问题。)只有一件事,如果我想对另一个小部件做同样的事情怎么办?还是任意数量的小部件?我可以使用{% if field.name != "category-name" and field.name != "another-name" %}吗?
    • @Flobin 是的,你可以。我对 Jinja2 不熟悉,但也许你可以使用{% if field.name not in ['category-name', 'another-name'] %}
    • 非常感谢弗拉基米尔!
    猜你喜欢
    • 2011-06-24
    • 2019-02-27
    • 1970-01-01
    • 2012-08-06
    • 2012-08-24
    • 2011-11-16
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    相关资源
    最近更新 更多