2011-08-26 4 views
0

"Private"값을 모델에 올바르게 저장할 수 있습니다. 그러나 편집 페이지를 열면 True 또는 False 값과 상관없이 항상 선택 취소됩니다.어떻게 장고에서 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

? MyData 객체를 private 속성으로 가져 오는 이유는 무엇입니까? –

답변

1

양식이 아닌 ModelForm을 사용해야합니다. 그런 다음 ModelForm을 인스턴스화하면 모델에 인스턴스가 설정됩니다. 이렇게하면 django가 모델을 기반으로 양식 필드를 자동으로 생성하므로 양식 필드를 복제하지 않아도됩니다. 당신이 뭘 하려는지

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

포인터를 가져 주셔서 감사합니다. ModelForm을 검색하여 진행하고 조사 할 좋은 예제를 발견했습니다. https://docs.djangoproject.com/en/dev/topics/forms/modelforms/ – amehta

관련 문제