我想将django模型十进制字段限制在客户端本身的4个位置,这意味着字段不允许用户输入超过4位数。
我尝试了下面的代码,但是只有在保存后才能进行验证,但我需要在用户输入数字时进行限制。
unit_price = models.DecimalField(db_column='UNIT_PRICE', max_digits=4, decimal_places=2)
答案 0 :(得分:1)
您是否尝试在表单定义中使用窗口小部件?
unit_price = forms.DecimalField(
widget=forms.NumberInput(attrs={'step': '0.01', 'min': '0.00', 'max': '99.99' }))
答案 1 :(得分:0)
您必须使用一些小的javascript来限制用户输入超过4位的数字,并在表单和javascript文件中使用以下代码段
<强>形式强>
unit_price = forms.DecimalField(
widget=forms.NumberInput(attrs={'step': '0.01', 'min': '0.00', 'max': '99.99', onkeypress: 'return isValid(event)'}))
<强>的javascript 强>
function isValid(event) {
var val = document.getElementById('test').value;
val = val.split('.').join('');
event = (event) ? event : window.event;
var charCode = (event.which) ? event.which : event.keyCode;
if (val.length < 4 || charCode == 8 || charCode == 37 || charCode == 39 || charCode == 46){
return true;
}
else {
return false;
}
}
通过这种方式,用户输入也可以限制在按键上的4个位置