Reputation: 15464
I want pre-checked checkbox, i passed "initial=True" but it is not working. Below is the code.
class permForm(forms.Form):
id = forms.CharField(widget=forms.TextInput(attrs={'id':'user_id'}),required=False)
def __init__(self, data, **kwargs):
super(permForm, self).__init__(data, **kwargs)
# offset_arr=data.split('/')
# menu_id=offset_arr[1]
# user_id=offset_arr[2]
# flag= offset_arr[3]
# if user.has_perm(permission.codename, task):
usr = User.objects.get(id=1)
task = Site.objects.get_current()
for item in list(AdminMenu.objects.filter(parent_id=0)):
permission=Permission.objects.get(id=item.permission_id);
if usr.has_perm(permission.codename, task):
checked=False
else:
checked=True
self.fields['menu_%d' % item.id] = forms.BooleanField(initial=True,label=item.title,required=False)
for childitem in list(AdminMenu.objects.filter(parent_id=item.id)):
cpermission=Permission.objects.get(id=childitem.permission_id);
if usr.has_perm(cpermission.codename, task):
childchecked=True
else:
childchecked=False
self.fields['menu_%s' %childitem.id] = forms.BooleanField(initial=True,label=childitem.title+'%s'%(data),required=False)
However it is working fine for static forms . see the code below
class MyForm(forms.Form):
option = forms.BooleanField(required=False, initial=True)
Is there any trick to pass initial value for dynamically loaded form element ?
Upvotes: 2
Views: 932
Reputation: 15464
I tried below and it worked:
self.fields['menu_%d' % item.id] = forms.BooleanField(label=item.title, required=False)
self.fields['menu_%d' % item.id].widget.attrs['checked'] = 'checked'
Upvotes: 0
Reputation: 7450
Try this:
Instead of
self.fields['menu_%d' % item.id] = forms.BooleanField(initial=True,label=item.title,required=False)
Remove the initial=True parameter when constructing the field and populate its initial value in the next step like:
self.fields['menu_%d' % item.id] = forms.BooleanField(label=item.title,required=False)
self.fields['menu_%d' % item.id].initial = True
Upvotes: 2