#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 %}