Как в Django проходить валидацию формы с MultipleChoiceField?

Здравствуйте.

Создал форму в Django, загружаю в неё файл и ввожу пару текстовых полей, валидацию формы form.is_valid() проходит, всё было хорошо до того момента пока я не добавил пару <select> MultipleChoiceField.

Вот что мне он выводит:

<ul class="errorlist"><li>visit_comparison<ul class="errorlist"><li>Enter a list of values.</li></ul></li><li>ctr_comparison<ul class="errorlist"><li>Enter a list of values.</li></ul></li></ul>


А вот сам код:

from django import forms

class xlsYandexDirect(forms.Form):

	visit_comparison_options = [
		(">","Больше"),
		("<","Меньше"),
		("==","Равно")
	]
	ctr_comparison_options = [
		(">","Больше"),
		("<","Меньше"),
		("==","Равно")
	]

	file = forms.FileField(label="", widget=forms.FileInput(attrs={"accept":"application/vnd.ms-excel"}))

	visit_count = forms.CharField(label="", widget=forms.TextInput(attrs={"class": "input", "placeholder": "0"}))

	ctr_count = forms.CharField(label="", widget=forms.TextInput(attrs={"class": "input", "placeholder": "0"}))

	visit_comparison = forms.MultipleChoiceField(label="", widget=forms.Select, choices=visit_comparison_options)

	ctr_comparison = forms.MultipleChoiceField(label="", widget=forms.Select, choices=ctr_comparison_options)


def index(request):
	if request.method == 'POST':
		form = xlsYandexDirect(request.POST, request.FILES)
		if form.is_valid():
			return render(request, 'main/success.html', {'text': text})
		else:
			return render(request, 'main/error.html')
	else:
		form = xlsYandexDirect(use_required_attribute=False)
		return render(request, 'main/index.html', {'form': form})


Не могу понять как проходить валидацию формы с MultipleChoiceField, он пишет ошибку хотя все <select> выбраны.

Помогите плиз, второй день разобраться не могу, гугл затёр до дыр.
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 1
@XXocTT Автор вопроса
Решено!
Компоненты Select по умолчанию используются для полей ChoiceField а не MultipleChoiceField
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы