我在models.py中声明了以下字段。
marks = models.DecimalField(max_digits=2, decimal_places=2, default=3.0)
在后端表结构是:
| Field | Type | Null | Key | Default | Extra |
| marks | float(3,1) | NO | | 1.0 | |
所以这里默认值3.0将尝试在后端保存为3.00(小数位= 2)并且没有空间存储左侧值3对吗?
对于上述情况,当我给出max_digits = 3或decimal_places = 1时,它正在工作。
请帮助我,从django到mysql数据库流程究竟发生了什么?
答案 0 :(得分:2)
DecimalField
接受max_digits
的参数,它是十进制数字中的总位数,decimal_places
是小数位数。
如果您将max_digits
定义为3并将decimal_places
定义为2,则可以保存的最大数字是9.99。它有3位数和2位小数。如果max_digits
例如为5,而decimal_places
为2,则可以保存的最大数字为999.99。
在你的情况下,最多2位数并且有2位小数是没有意义的,因为它不能存储3.00,它有3位数。因为小数位已占用2位数,所以在点之前没有数字空格。因此,您可以保存的最大数字是0.99。
答案 1 :(得分:0)
这些是max_digits和decimal_places的定义
max_digits
值中允许的最大位数(小数点之前的数字加上小数点之后的数字,中间去除了前导零)。
decimal_places
允许的最大小数位数。