Изменение атрибутов в виджете CheckboxSelectMultiple на каждом элементе с помощью django form
Мне нужно создать предварительно заполненное поле в форме, которая имеет виджет CheckboxSelectMultiple. Я думал использовать разные значения attrs={"checked":""} для каждого id заполненной формы.
Можно ли сделать цикл на элементах?
from django import forms
from myapp.models import MyModel
class MyForm(forms.Form):
qs = MyModel.object.value_list("id","value")
qsa = MyModel.object.value_list("id", "is_checked")
myfield = forms.ModelMultipleChoiceField(queryset=qs, widget=form.CheckboxSelectMultiple)
extrafield = forms.CherField(widget=forms.Textarea)
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
for id, is_checked in self.qsa:
if is_checked is true:
self.fields["myfield"].widget.attrs["checked"] = ""
Это, конечно, не сработает, но мне нужно вот что.
<form action="some_action">
<input type="checkbox" id="1" name="1" value="value_1">
<label for="value_1"> value_1</label><br>
<input type="checkbox" id="2" name="2" value="value_2">
<label for="value_2"> value_2</label><br>
<input type="checkbox" id="3" name="3" value="value_3">
<label for="value_3" checked="checked"> value_3</label><br><br>
<input type="submit" value="Submit" >
</form>