Поле формы CheckboxSelectMultiple в стиле. Django

#python #html #django

#питон #HTML #джанго

Вопрос:

У меня есть форма, в которой есть одно поле checkboxselectmultiple:

 class CreateRecipeForm(forms.ModelForm):
    class Meta:
        model = Recipe
        fields = ('name', 'image', 'description', 'cooking_time', 'tags')
        widgets = {
            ...
            'tags': forms.CheckboxSelectMultiple(),
            ...
        }
  

Я могу перебирать параметры поля, такие как:

 {% for option in form.tags %}
{{ option.tag }} {{ option.choice_label }}
{% endfor %}
  

Как бы я отрисовал {{ option.tag }} в качестве поля ввода? т.е.:

 <input type="checkbox"...>
  

Спасибо.

Ответ №1:

Фактически, прочитав некоторые документы django по этой теме, я понял, что поля CheckboxSelectMultiple уже отображаются как input поля. Итак, если вам не нужно добавлять определенные значения в каждое поле, вы можете сделать это прямо в форме, добавив атрибуты в виджет:

 widgets = {
            ...
            'tags': forms.CheckboxSelectMultiple(attrs={'class': 'anyclass'}),
            ...
          }
  

Но если вам нужно добавить разные параметры к каждому полю, вы можете сделать это в шаблоне таким образом:

                         {% for obj_choice, obj_value in form.obj.field.choices %}
                            <div class="tags__item">
                                <input type="checkbox" name="tags" value="{{obj_choice.instance.pk}}"
                                id="id_{{obj_choice.instance.value}}" 
                                class="tags__checkbox tags__checkbox_style_{{obj_choice.instance.style}}">
                                <label for="id_{{obj_choice.instance.value}}" class="tags__label">
                                    {{obj_choice.instance.template_name}}
                                </label>
                            </div>
                        {% endfor %}