Change attrs in a CheckboxSelectMultiple widget on every item with django form
I need to build a pre-filled field in a form that have CheckboxSelectMultiple widget. I thought to use different attrs={"checked":""} value on each id of the form filed.
Is possible to loop on items?
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"] = ""
This will obvoiusly not work, but qhat I need is this.
<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>