2011-08-26 65 views
0

我能夠在模型中正確保存「私人」的值。但是,當我打開編輯頁面時,它始終設置爲取消選中,而不管該值爲True還是False。如何將django中的BooleanField設置爲從模型中拾取的值?

# from forms.py 
class MyEditForm(forms.Form) 
    title = forms.CharField(
     label='Title', 
     widget=forms.TextInput(attrs={'size': 64}) 
     ) 
    private = forms.BooleanField(
     label='Private', 
     required=False, 
    ) 

# from models.py 
class MyData(models.Model): 
    title = models.CharField(max_length=200) 
    private = models.BooleanField() 

# from views.py 
def save_page(request) 
    try: 
     mydata = MyData.objects.get(
      private=private 
     ) 
     title = mydata.title 
     private = mydata.private 
    except ObjectDoesNotExist: 
     pass 
    form = MyEditForm({ 
     'title': title, 
     'private': private 
    }) 
+0

你想做什麼?你爲什麼通過private屬性獲得MyData對象? –

回答

1

您應該使用ModelForm而不是Form。然後當您實例化ModelForm時將實例設置爲您的模型。這也可以避免你需要複製表單字段,因爲django會根據模型自動生成表單字段。

foo = Foo.objects.get(id=foobar) 
form = YourForm(instance=foo) 
+0

感謝您的指點。我搜索了ModelForm,並找到了一個很好的例子來進行調查。 https://docs.djangoproject.com/zh/dev/topics/forms/modelforms/ – amehta

相關問題