поля формы настраиваемого шаблона django - PullRequest
0 голосов
/ 17 июня 2020

Я попытался использовать свой собственный стиль шаблона вместо стиля формы по умолчанию 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! будет нормально работать !? я что-то пропустил? или я должен добавить или удалить что-то в моем коде? я ценю вашу помощь ..

...