DecimalField類型:
固定精度的十進制數,一般用來存金額相關的數據。額外的參數包括DecimalField.max_digits(整個數字的長度)和DecimalField.decimal_places(小數點后面的有效位數)
模型定義時, DecimalField類型字段如下定義:
aaf_1kg_all = models.DecimalField(blank=True, null=True)
報錯:
(fields.E130) DecimalFields must define a 'decimal_places' attribute.
(fields.E132) DecimalFields must define a 'max_digits' attribute.
即: DecimalFields字段的“decimal_places”() 和 “max_digits” 屬性必須被定義,不能忽略。
那么修改一下:
aaf_1kg_all = models.DecimalField(blank=True, null=True, max_digits=10, decimal_places=10)
報錯:
Traceback (most recent call last):
[...]
File ".../django/db/backends/utils.py", line 200, in format_number
value = value.quantize(decimal.Decimal(".1") ** decimal_places, context=context)
decimal.InvalidOperation: [<class 'decimal.InvalidOperation'>]
這里注意:
參數max_digits的值必須大於decimal_places的值。
0.10000 有效位是5位,但是1.00000的有效位是6位。
因此,如果max_digits=5, decimal_places=5, 那么,任何大於或者等於1的值出現都將報錯。
正面舉例:
max_digits=2, decimal_places=2
那么該字段可表示數值范圍為0.00 - 99.99