2017-01-29 12 views
0

Forms.pyDjango模型布爾字段需要初始未選中。初始=假所需=假不工作

class CheckPostedForm(forms.ModelForm): 
     posted = forms.BooleanField(required=False, initial=False) 

Views.py

 postform = CheckPostedForm(request.POST, instance=author) 
     if postform.is_valid(): 
      postform.save() 
     else: 
      print 'Cannot save post form.' 

Models.py

posted = models.CharField(max_length=2, blank=True, null=True) 
class Meta: 
    model = TmpPlInvoice 
    exclude = ['net_amt', 'post_date', 'address', 'particulars', 'pos_code', 'acct', 'cust', 'voucher_id', 'voucher_date', 'post_date'] 
    labels = { 
     'posted': 'Posted', 
    } 

我想複選框,它最初是未選中的基於數據庫中的值我檢查/取消選中它。無論我做什麼,表格總是以檢查=「檢查」出來。

打印postform給出了這個,

<tr><th><label for="id_posted">Posted:</label></th><td><input checked="checked" id="id_posted" name="posted" type="checkbox" value="n" required /></td></tr> 

我已經搜索了很多的每一個地方,文檔說,它應該是最初爲false所需= false如果我們想申請條件。

詳細 Views.py

def master_detail_posted(request): 
    if request.method == 'GET': 
     author = TmpPlInvoice.objects.get(id=1) 
     postform = CheckPostedForm(instance=author) 
     return render(request,'main.html' ,{'postform': postform}) 
    if request.method == 'POST': 
     author = TmpPlInvoice.objects.get(id=1) 
     postform = CheckPostedForm(request.POST, instance=author) 
     print postform 
     if postform.is_valid(): 
      logger.info('saving post form %s', postform.cleaned_data) 
      postform.save() 
     else: 
      logger.info('post form is not valid %s %s', postform.errors, request.POST) 
     return render(request,'main.html' ,{'postform': postform}) 

模板

<div> {{ postform }} </div> 
+0

如何使用wiget ..'貼= forms.BooleanField(所需=假插件= forms.CheckboxInput())' –

+0

無論如何, whereis'class Meta: model = ModelName'在CheckPostedForm裏面? –

+0

@SancaKembang還是一樣的結果。 – whatIf

回答

0

你硬編碼在模板領域。顯然,Django不能更改您明確寫入的HTML標籤。

您需要在您的模板使用Django標籤:

<td>{{ form.posted }}</td> 
+0

爲了清晰起見,我粘貼了html。這是Django動態生成的內容。我在模板中使用Django標籤。 – whatIf

+0

然後你需要顯示你的實際模板和* full *視圖。 –

+0

我已經提出了代碼。 – whatIf