@Vitalii181190
Начинающий вэб-разработчик

Как обойти валидатор формы?

У меня есть форма в которой есть поле "price" это DecimalField мне нужно что-бы если пользователь вводил после запятой или точки больше двух цыфр не выводилась ошибка('Убедитесь, что вы ввели не более 2 цифр после запятой.') а вместо этого после запятой или точки окрузгялось число до двух цыфр и вносилось в БД:
class AddСurrency(forms.Form):

    def __init__(self, server, *args, **kwargs):
        super(AddСurrency, self).__init__(*args, **kwargs)

    price = forms.DecimalField(required=True, decimal_places=2,
                               widget=forms.TextInput(attrs={}))
    availability = forms.IntegerField(required=True, widget=forms.TextInput(attrs={}))
    
    def clean_price(self):
        price = self.cleaned_data['price']
        if price > 10000001.00 or price < 0:
            raise forms.ValidationError(_('Неверная цена.'))
        return price

    def clean_availability(self):
        availability = self.cleaned_data['availability']
        if availability > 10000000 or availability < 0:
            raise ValidationError(_('Неверное количество.'))
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Vitalii181190 Автор вопроса
Начинающий вэб-разработчик
да я в формс прописал
price = forms.DecimalField(required=True, decimal_places=None, min_value=0, max_value=10000000.00,
                               widget=forms.TextInput(attrs={}))

а в models.py у меня это поле:
price = models.DecimalField(verbose_name='Цена в $', null=True, decimal_places=2, max_digits=10, blank=True)

и если я правильно понимаю неважно какое кол-во цыфр будет после запятой до попадания в БД models.DecimalField округлит это число не выводя ошибок до двух после запятой?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы