自定义模板表单字段django

时间:2020-06-17 13:58:45

标签: django templates django-forms

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

0 个答案:

没有答案
相关问题