我的Django模型中有以下字段:
price = models.DecimalField(max_digits=8, decimal_places=2, default=0)
以及我的表单中的以下代码:
price = forms.DecimalField(widget=forms.NumberInput(attrs={'step': '0.01', 'text-align': 'right;'}))
(顺便说一下,文本对齐不起作用 - 我认为不同的问题)
在表单中显示时有效。事实上,当我尝试使用超过2个小数位时,表单会弹出一条消息:
但是,如果输入太多数字,如:
Django抛出以下错误:
/ balancer / set_security_prices / 2017-10-14中的InvalidOperation []
请求方法:POST请求
网址:http://localhost:8000/balancer/set_security_prices/2017-10-14
Django版本:1.9.1异常类型:InvalidOperation异常
价值:[]例外
位置:/ Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/db/backends/utils.py 在format_number中,第200行Python 可执行文件:/ Library / Frame /Python.framework / Version / 3.5 / bin / python3.5 Python版本:3.5.1
在保存数据之前我执行的is_valid()检查没有捕获问题。这对我来说没有意义。不应该Django防止这种情况或者我必须添加try ...except
代码吗?
谢谢!
答案 0 :(得分:1)
浏览器生成的第一个验证错误,如果您想要相同的效果,则应该为输入添加最大长度验证 例如:
price = forms.DecimalField(
widget=forms.NumberInput(
attrs={'step': '0.01', max='999999', 'text-align': 'right;'})
# ^^^^^^^^^^^^^
)