为啥 Django DecimalField 属性“max_digits”是非可选的?

Posted

技术标签:

【中文标题】为啥 Django DecimalField 属性“max_digits”是非可选的?【英文标题】:Why is Django DecimalField attribute `max_digits` non-optional?为什么 Django DecimalField 属性“max_digits”是非可选的? 【发布时间】:2015-09-06 18:16:52 【问题描述】:
CommandError: System check identified some issues:

ERRORS:
(fields.E132) DecimalFields must define a 'max_digits' attribute.

max_digits 是 Django 的模型字段 DecimalField 的必需属性是否有技术原因?

文档说它使用了 Python 的 [decimal][1] 模块,但 python 对象类型似乎根本不受十进制对象的绝对位数的任何影响。

也许有一个不透明的 ORM 原因?

FloatFields(与 DecimalFields 进行比较)不需要您预先确定位数,那么为什么要使用小数呢?

我知道这个小的附加属性不应该打扰我,但由于某种原因,自从我第一次使用此字段类型以来,它似乎对我来说是不必要的。

【问题讨论】:

【参考方案1】:

数据库(不是 ORM)需要它。 SQL decimal 列同时声明了精度(有效位数的总数)和小数位数(小数点右侧的位数)。

请参阅此答案中引用的形式语法:https://***.com/a/759606/2337736

【讨论】:

以上是关于为啥 Django DecimalField 属性“max_digits”是非可选的?的主要内容,如果未能解决你的问题,请参考以下文章

在 Django Admin 中使用属性

Django - 如何指定验证失败的字段?

为啥 Django Crispy Forms 会抛出“模块‘django.forms.forms’没有属性‘BoundField’”

如何自动填充表单框值填充另一个?

为啥 Django 中没有“ListField”?

Django--Form小结