![](/img/trans.png)
[英]Django: models.BooleanField(default=False) always save value as 1(True)
[英]WTForms BooleanField treats JSON false value as true
我正在使用wtforms
處理來自我的帖子請求的數據。 一個特定的發布請求發送包括布爾值的各種數據。
我的表單看起來像這樣:
class EditFileForm(Form):
title = StringField('title')
shared = BooleanField('shared')
fileID = IntegerField('fileID')
userID = IntegerField('userID')
我可以看到,當我收到請求時,數據如下所示:
data = MultiDict(mapping=request.json)
print(data)
>>MultiDict([(u'shared', False), (u'title', u'File5'), (u'userID', 1), (u'fileID', 16)])
您可以看到布爾字段為“false”,並且打印原始數據也顯示出來但是,當我打印實際的表單字段時,我得到了真實。
print(form.shared.raw_data)
[False]
print(form.shared.data)
True
我讀到WTForms可能不知道如何處理錯誤的布爾值。 這樣做的正確方法是什么? 使用IntegerField
代替?
我有另一個表單,其中booleanfield正在處理來自postgres數據庫的錯誤布爾值。
WTForms並不真正意味着使用JSON數據。 在這種情況下, BooleanField
檢查它收到的值是否為field.false_values
,默認為('false', '')
。 False
對象不在那里,所以它被認為是真的。
您可以將一組不同的false_values
給該字段。
BooleanField(false_values={False, 'false', ''})
或者在第一次使用該字段之前將其放置在某處,為所有實例修補它。
BooleanField.false_values = {False, 'false', ''}
最好使用Marshmallow等序列化庫來處理JSON數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.