Как заставить работать валидатор пользовательских форм 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-запроса, особенно если они создают, обновляют или удаляют сущности.