Как заставить работать валидатор пользовательских форм Django?

Я работаю над пользовательским валдатором для моих Django форм. Необъяснимым образом я не могу получить желаемый результат. Вот мой код

from django import forms
from django.core import validators
from django.core.exceptions import ValidationError
from .models import Vote
from django.core.validators import MaxValueValidator, MinValueValidator


def use_one(value):
    if value != 1:
        raise forms.ValidationError("Value is not 1!")

class MyForm(forms.Form):


     main_form = forms.IntegerField(validators = [use_one], 
                                    label= 'Main', 
                                    required = False,
                                     widget = forms.NumberInput(
                                                   attrs={'id': 'mainInput',
                                                          'name': 'main,
                                                          'href': '#',
                                                          'value': '',
                                                          'class': "form-control"}))

Есть мысли?

views.py

form = MyForm()

main_result = request.GET.get(main_form)

form.fields['main_form_result'].initial = main_result

context = {form: form}

Вы никогда не валидируете свою форму. Вы должны передать request.GET в форму, и пусть форма проверит ее, так:

def some_view(request):
    form = MyForm(request.GET)
    form.is_valid()
    context = {'form': form}
    return render(request, 'some-template.html', context)

Часто формы отправляются в виде POST-запроса, особенно если они создают, обновляют или удаляют сущности.

Вернуться на верх