2016-07-25 98 views
1

我有其中的一個字段定義爲Django的形式:編輯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> 

總之:<label><input></label>。但是,我希望輸出爲<label></label><input>

這是可能的,如果是這樣,怎麼樣?

Full code is here

回答

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 %} 
+0

謝謝!這解決了我的問題。 (在我的示例中,名稱實際上是「名稱」,但這是另一個問題。) 只有一件事,如果我想要對另一個小部件執行相同操作,該怎麼辦?或者任意數量的小部件?我可以使用'{%if field.name!=「category-name」和field.name!=「another-name」%}'? – Flobin

+0

@Flobin是的,你可以。我不熟悉Jinja2,但也許可以使用'{%if field.name not in ['category-name','another-name']%}'。 –

+0

非常感謝弗拉基米爾! – Flobin