Я попытался использовать свой собственный стиль шаблона вместо стиля формы по умолчанию django, он отлично работает для создания сообщений, но не работает для обновления моих наборов форм (inlineformset), он также работает, если я использую стиль формы по умолчанию django
это мой views.py
class TitleQuestionAnswer(LoginRequiredMixin,UserPassesTestMixin,UpdateView):
model = Title
form_class = TitleForm
template_name = 'template/update_title_question.html'
def get_context_data(self,*args,**kwargs):
context = super(TitleQuestionAnswer,self).get_context_data(*args,**kwargs)
if self.request.POST:
context['questions'] = QA_InlineFormset(self.request.POST,instance=self.object)
else:
context['questions'] = QA_InlineFormset(instance=self.object)
return context
def form_valid(self,form):
context = self.get_context_data()
context = context['questions']
self.object = form.save()
if context.is_valid() and context.cleaned_data !={}:
response = super().form_valid(form)
context.instance = self.object
context.save()
return response
print('errors : ',context.errors, 'data : ',context.cleaned_data)#updated
return super().form_invalid(form)
def get_success_url(self):
return reverse_lazy('q-answer:post',kwargs={'pk':self.object.pk})
и это мой шаблон
<form method="POST">{% csrf_token %}
<div class="col-6 inp text-center">
{{form.name | add_class:'col-12 text-center'}}
{% if form.name.errors %}
<div class="error col-3 mx-auto">{{form.name.errors}}</div>
{% endif %}
</div>
</div>
<!-- order -->
<div class="col-12 p-0 border-top border-light ">
<table class="customeTable col-12 table-responsive-sm info text-center table1 mx-auto mb-2 ">
<tbody class="tbody tb1 " id="form_set">
{{questions.management_form}}
{% for form in questions.forms %}
{{form.errors}} <!--updated-->
{{questions.errors}}
{{questions.non_form_errors}}
{{form.id}}
<tr class="p-0 col-12">
<td class="">
<div class="col-12 p-0 mt-3 inp">
{{form.field_a | add_class:'col-12'}}
</div>
</td>
<td class="">
<div class="col-12 p-0 mt-3 inp">
{{form.field_b | add_class:'col-12'}}
</div>
</td>
</tr>
{% endfor %}
</tbody>
</form>
, но если я изменю его только на {{questions.management_form}} {% for form in questions.forms %} {{form}}{%
endfor %}
, этот стиль отлично подойдет для моего CreateView
! будет нормально работать !? я что-то пропустил? или я должен добавить или удалить что-то в моем коде? я ценю вашу помощь ..