2015-12-21 39 views
0

在Django的改變輸入,我有一個ChoiceField,看起來像這樣:Django的ChoiceField從假到真

completed = forms.ChoiceField(choices = COMPLETED_CHOICES, required = True) 

這裏的COMPLETED_CHOICES

COMPLETED_CHOICES = (
    ('', ''), 
    (True, "Yes"), 
    (False, "No") 
) 

這是我model.py:

completed = models.BooleanField(choices = COMPLETED_CHOICES) 

我的問題是,每次我提出一個新的實例,如果我選擇了「No「,值將被保存爲True。同時,如果我選擇了「Yes」,它會保存爲真,符合市場預期其工作。爲什麼只有「No」受到影響?

這裏的views.py

completed = form.cleaned_data['completed'] 

book = Book(
    completed = completed, 
) 

book.save() 
+0

在'completed = form.cleaned_data ['completed']'下添加'print completed'並讓我們知道在選擇「是」和「否」時打印出來的內容在你的形式。 – Hybrid

+0

'print(completed)'給了我False。 – Lyxpudox

回答

0

值可能是從一種形式作爲字符串傳遞的相關部分。看看下面的代碼:

>>>print False 
False 
>>> 
>>>print "False" 
False 
>>> 
>>> 
>>>if False: 
... print 1 
>>> 
>>>if "False": 
... print 1 
1 

然後,你將需要使用例如

completed = form.cleaned_data['completed'] == 'True' 

您可以隨時給定值的類型使用類型解析從字符串值( form.cleaned_data ['completed'])