提交表单时,请确保小数点错误前的位数不超过3位

时间:2019-05-22 07:24:35

标签: python django django-models decimal

当我尝试提交模式表格时,出现错误“确保小数点前不超过3位数字”。

我该如何解决?

我的模特:

class Product(models.Model):
    quantity = models.DecimalField( "Quantity", max_digits=8, decimal_places=2, default=0)
    retail_price = models.DecimalField( max_digits=8, decimal_places=4, default=0, blank=True)
    purchase_price= models.DecimalField( max_digits=8, decimal_places=2, default=0, blank=True)
    timi_xondrikis = models.DecimalField( max_digits=8, decimal_places=2, default=0, blank=True)

我的表格:

class ProductForm(ModelForm):
    class Meta:
        model = Product
        #fields = '__all__'
        fields=('quantity','retail_price')

        widgets = {
    'retail_price' : forms.NumberInput(attrs={'max':9999.99})
}

接受价格字段900或900.00,但是提供我想要的1000或1000.00是不可接受的。事实是,我将我的retail_price字段定义为max_digits = 10。

enter image description here

为什么会这样?

2 个答案:

答案 0 :(得分:1)

基本上,您需要根据documentation增加decimal_places

  

例如,存储最多999个数字,分辨率为2个小数   地点,您将使用:

models.DecimalField(..., max_digits=5, decimal_places=2)

因此,如果要存储10000,请使用decimal_places=4

答案 1 :(得分:0)

retail_price的形式为您的Meta添加一个小部件,以指定最大值

widgets = {
    'retail_price' : forms.NumberInput(attrs={'max':999.99})
}