2012-04-30 38 views
2

我想預先檢查複選框,我通過「初始=真」,但它不工作。以下是代碼。初始=真正不工作在Django的動態形式

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) 

但是它對靜態表單工作正常。見下文

類MyForm的代碼(forms.Form):
選項= forms.BooleanField(所需=假,初始=真)

是否有任何特技通過初始值動態加載形式元素?構建字段時

代替

self.fields['menu_%d' % item.id] = forms.BooleanField(initial=True,label=item.title,required=False) 

取出初始= True參數和在像下一步填充它的初始 值::

回答

2

嘗試此

self.fields['menu_%d' % item.id] = forms.BooleanField(label=item.title,required=False) 
self.fields['menu_%d' % item.id].initial = True 
+0

謝謝你rantanplan,但我對你的邏輯做了一些修改 – sumit

0

我在下面嘗試,它的工作原理:

self.fields['menu_%d' % item.id] = forms.BooleanField(label=item.title, required=False) 
self.fields['menu_%d' % item.id].widget.attrs['checked'] = 'checked'