我尝试使用自己的模板样式而不是默认的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
!
它将工作正常!有什么我想念的吗?还是应该在代码中添加或删除某些内容?
我感谢您的帮助..