![](/img/trans.png)
[英]Nullable DecimalField returns 'This value must be a decimal number' when blank
[英]Django: Console returns “value must be a decimal number” on a CharField defined field?
對.....所以我對此感到困惑。 此錯誤所基於的代碼函數是用戶提交充滿指定數據的csv文件。 Django將處理數據處理並將提交的數據添加到MySQL數據庫。 在調試一些處理錯誤,並確保我所有定義的列表與csv文件頭順序和所有匹配時,Django的Model.save()函數將無法正常工作。 所以我打開了異常並打印到控制台,我把它作為錯誤:
編輯:將此值更新為實際錯誤結果值:
[u"'F1216-07a' value must be a decimal number."]
其中'value1'是要輸入CharField定義字段的數據值。 我的models.py文件都定義為字符串,而PHP數據庫表通過PHPMyAdmin將此字段定義為char(N)。 我想這里是該領域的模型定義作為參考:
x_version = models.CharField(choices=X_VERSION_CHOICES, max_length=32, blank=True, verbose_name='By X Field Version')
以下是選擇的示例定義:
X_VERSION_CHOICES = (
('value1', 'value1'),
('value2', 'value2'),
)
此字段的值必須是預定義字符串選項之一,因此沒有任何選項可將此值更改為Decimal值。 當定義的類型正確時,為什么Django會顯示此錯誤? 是不是因為選擇常量被定義為?
編輯:我認為這是一個不言自明的問題,但這里是model.Save()方法崩潰的代碼示例。
try:
....
# Value in this reconciliation_required db field must be set as
# "1" for true, which in test file it is.
if contracts[line['contract_no']].reconciliation_required:
# pass SampleDesignParameters the parameter dictionary and
# create line_parameters
line_parameters = SampleDesignParameters(**para_dict)
line_parameters.contract = contracts[line['contract_no']]
line_parameters.name = 'Auto-Created'
line_parameters.save()
line_sample.parameters = line_parameters
except Exception as e:
print e
# .... more code that generates warnings here
其中para_dict是一個字典,其中鍵作為數據庫命名字段,其值是用戶為該字段輸入的數據。 我在控制台上打印了dict,因此對於鍵和數據字段,它們都相應地排列。 至於模型本身,它......
class SampleDesignParameters(DesignParameters):
parent_template = models.ForeignKey('DesignParameters', related_name='parent', blank=True, null=True)
...
class DesignParameters(models.Model):
id = models.AutoField(primary_key=True)
....
# This field that Django has errors saving on:
f1216_version = models.CharField(choices=F1216_VERSION_CHOICES, max_length=32, blank=True, verbose_name='BY ASTM F1216 VERSION')
....
並且該字段的適當常量與虛擬字體的格式基本相同:
F1216_VERSION_CHOICES = (
('F1216-07a', 'F1216-07a'),
('F1216-09', 'F1216-09'),
)
最可能的解釋是,某種方式將該值保存到模型的錯誤字段中。 你能抓住錯誤並檢查價值觀嗎? 或者可能存在一個可能的字段,並且可能是CSV中的錯誤行,其值丟失,因此它們會被移位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.