Удаление запятой из целочисленного поля вызывает ошибку валидации - PullRequest
0 голосов
/ 24 октября 2018

У меня есть модель с количеством в качестве целочисленного поля.и ModelForm в качестве TextInput

Используя Javascript, я смог отформатировать поле с разделителем тысяч (например, 100 000).

Теперь я пытаюсь очистить значение поля при отправке формы.так что это может быть сохранено как целое число (100000) в базе данных.Но я получаю ошибку проверки: Form.ValidationError: введите целое число

Что я пробовал до сих пор

models.py

amount = models.IntegerField(blank=False)

forms.py

class InvoiceCreateForm(forms.ModelForm):

    class Meta:
        model = ClientInvoice
        fields = ['client', 'matter', 'desc', 'amount']

        widgets = {
            'client': forms.Select(
                attrs={'class': 'form-control js-example-basic-select2', 'placeholder': '---------'}),
            'matter': forms.Select(
                attrs={'class': 'form-control js-example-basic-select2', 'placeholder': '----------',}),
            'desc': forms.Textarea(
                attrs={'class': 'form-control', 'placeholder': 'Remark', 'rows':'2'}),
            'amount': forms.TextInput(
                attrs={'class': 'form-control number', 'placeholder': 'Amount', 'id': 'numberInput'}),
        }

    def clean_amount(self):
        data = self.cleaned_data['amount']
        data = str(data)
        data = data.replace(',', '')
        data = int(data)
        return data

и мой код Javascript

<script>
        $('input.number').keyup(function(event) {

      // skip for arrow keys
      if(event.which >= 37 && event.which <= 40) return;

      // format number
      $(this).val(function(index, value) {
        return value
        .replace(/\D/g, "")
        .replace(/\B(?=(\d{3})+(?!\d))/g, ",")
        ;
      });
    });
    </script>
...