Джанго формы поездки меня много раз ...дает начальное значение поднимает «значение поля требуется» ошибка в Джанго
я дал начальное значение для ChoiceField (инициализации Формы класса)
self.fields['thread_type'] = forms.ChoiceField(choices=choices,
widget=forms.Select,
initial=thread_type)
Форма, созданная с помощью thread_type
с указанным выше кодом, не проходит is_valid(), потому что это поле (thread_type) требуется '.
-EDIT-
нашел исправление, но он все еще довольно озадачивает меня.
У меня был код в шаблоне
{% if request.user.is_administrator() %}
<div class="select-post-type-div">
{{form.thread_type}}
</div>
{% endif %}
и когда эта форма получает представлены, request.POST не имеет «thread_type», когда пользователь не администратор.
функция вида создает форму со следующим кодом:
form = forms.MyForm(request.POST, otherVar=otherVar)
Я не понимаю, почему дают начальное значение с помощью следующего (то же самое, что и выше) не достаточно.
self.fields['thread_type'] = forms.ChoiceField(choices=choices,
widget=forms.Select,
initial=thread_type)
И, в том числе thread_type
переменной в request.POST
позволяет форму, чтобы пройти проверку is_valid().
Форма код класса выглядит следующим образом
class EditQuestionForm(PostAsSomeoneForm, PostPrivatelyForm):
title = TitleField()
tags = TagNamesField()
#some more fields.. but removed for brevity, thread_type isn't defined here
def __init__(self, *args, **kwargs):
"""populate EditQuestionForm with initial data"""
self.question = kwargs.pop('question')
self.user = kwargs.pop('user')#preserve for superclass
thread_type = kwargs.pop('thread_type', self.question.thread.thread_type)
revision = kwargs.pop('revision')
super(EditQuestionForm, self).__init__(*args, **kwargs)
#it is important to add this field dynamically
self.fields['thread_type'] = forms.ChoiceField(choices=choices, widget=forms.Select, initial=thread_type)
Можете ли вы показать больше кода? когда вы запускаете эту строку? – YardenST
Спасибо. обновил вопрос с помощью кода relavant. – eugene