Убедитесь, что при отправке формы перед ошибкой после запятой стоит не более 3 цифр. - PullRequest
0 голосов
/ 22 мая 2019

При попытке отправить модальную форму появляется сообщение «Убедитесь, что перед десятичной запятой не более 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 ]

1 голос
/ 22 мая 2019

В основном вам нужно увеличить decimal_places, согласно документации :

Например, для хранения чисел до 999 с разрешением 2 десятичных места, которые вы бы использовали:

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

Так что используйте decimal_places=4, если хотите сохранить 10000.

0 голосов
/ 22 мая 2019

Добавьте виджет для вашего retail_price в форме Meta, в которой указано максимальное значение

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