В моем коде есть метод jQuery, с помощью которого я динамически добавляю значение в форму при отправке.Код выглядит следующим образом:
form_page.html
<form id="objectForm" class="form-horizontal" action="" method="post">
{% csrf_token %}
{% include 'manage/form-template.html'%}
<button id="submitBtn">submit</button>
</form>
<script>
$(document).ready(function(){
$("#submitBtn").click(function(){
$("#objectForm").submit(function(){
$("<input />").attr("type", "hidden")
.attr("name", "dates")
.attr("value", "something")
.appendTo("#objectForm");
return true;
}); // Submit the form
});
});
</script>
views.py
class ObjectUpdateView(UpdateView):
template_name = 'manage/object_form.html'
form_class = ObjectEditForm
def get_success_url(self):
#...
def form_valid(self, form):
clean = form.cleaned_data['dates']
print('Dates: ', clean)
return super(ObjectUpdateView, self).form_valid(form)
forms.py
class ObjectEditForm(forms.ModelForm):
class Meta:
model = Object
fields = ['TestField']
Этот кодприводит к KeyError в строке clean = form.cleaned_data['dates']
.Отладка значений POST в Chrome Я вижу, что само значение установлено правильно.По какой-то причине Django не регистрирует это.
Кто-нибудь может подсказать, что мне нужно сделать, чтобы получить доступ к этому значению в Python?
РЕДАКТИРОВАТЬ
Основываясь на обсуждении в комментариях, я хотел немного обновить то, что ищу.
Я знаю, что ObjectEditForm
имеет только одно поле.Причина в том, что у меня есть только одно поле в моей модели Object
.Другое поле dates
, которое я пытаюсь добавить, я пытаюсь добавить, будет использоваться в представлении. На моем html-сайте я также использую календарь JS, из которого я собираю даты по методу отправки и помещаю их вэто дополнительное поле.