Как проверить встроенный набор форм в представлении создания - PullRequest
1 голос
/ 28 января 2020

У меня есть встроенный набор форм и 2 разные формы в представлении создания одной из форм.

Все мои поля в модели не заполнены = False, а минимальный уровень проверки встроенного набора форм равен 1.

Если я попытаюсь отправить форму без каких-либо полей из формы создания представления, она отображает сообщение classi c «Пожалуйста, заполните это поле» без повторного отображения страницы. Я хочу добиться того же, когда форма не заполнена правильно. Также то же самое для второй формы (эта форма отображается только тогда, когда форма заполнена на основе выбора).

Я могу получать сообщения об ошибках при рендеринге формы, но я хотел бы сделать это перед отправкой на сервер. Возможно ли что-то изменить в модели или мне нужно сделать это через js на передней панели?

Большое спасибо.

Просмотров:

class SolicitacionReferenciaCreate(CreateView):

    template_name = 'microcredito/solicitacion_form.html'
    model = ContactoInfo
    fields = ['nombre', 'destinoPrestamo', 'apellido']
    success_url = reverse_lazy('accounts/login')


    def get_context_data(self, **kwargs):

        data = super(SolicitacionReferenciaCreate, self).get_context_data(**kwargs)
        referencias_form_1 = ReferenciaForm()
        data['referencias_form_1'] = referencias_form_1

        if self.request.POST:
            data['plataformas'] = IngresosFormSet(self.request.POST)
        else:
            data['plataformas'] = IngresosFormSet()

        return data

    def form_valid(self, form):
        context = self.get_context_data()
        plataformas = context['plataformas']

        with transaction.atomic():

            #ContactoInfo form
            if plataformas.is_valid() and form.is_valid():
                print("VALID")
                self.object = form.save()
                plataformas.instance = self.object
                cuposPlataformas = []
                for f in plataformas:
                    cd = f.cleaned_data
                    try:
                        score = ScorePersonas.objects.filter(idPlataforma=cd.get('idPlataforma'), numberPlataforma=cd.get('number_plataforma'),
                                                            aprobado=1)[0]
                        cuposPlataformas.append(score.cupo)
                    except:
                        try:
                            score = ScorePersonas.objects.filter(idPlataforma=cd.get('idPlataforma'), numberPlataforma=cd.get('number_plataforma'),
                                                            aprobado=0)[0]
                            cuposPlataformas.append(0)
                        except:
                            pass
                plataformas.save()

                self.object.save()
                referenciaCreado1 = Referencia.objects.create_Referencia(self.object, plataformaObjeto, rt_referenciado_1, celular_referenciado_1,
                                                                        nombre_referencia, apellido_referencia)
                referenciaCreado1.save()

            else:
                #messages.error(request, "Error")
                return self.render_to_response(self.get_context_data(form=form))

        return render(self.request, 'microcredito/solicitacion_form.html', context)


Шаблон:

<form action="" method="post" id="contactForm">
                                        {% csrf_token %}
                                        {{ form.non_field_errors }}
                                        {{ form.source.errors }}
                                        {{ form.source }}
                                        {{ form.nombre.errors }}
                                        {{ form.nombre|as_crispy_field }}

                                        <table class="table">
                                        {{ plataformas.management_form }}

                                        {% for form in plataformas.forms %}
                                        {% if forloop.first %}
                                        <thead>
                                        <tr>
                                            {% for field in form.visible_fields %}
                                                <th>{{ field.label|capfirst }}</th>
                                            {% endfor %}
                                        </tr>
                                        </thead>
                                        {% endif %}
                                        <tr class="{% cycle row1 row2 %} formset_row">
                                        {% for field in form.visible_fields %}
                                            <td>
                                                {# Include the hidden fields in the form #}
                                                {% if forloop.first %}
                                                    {% for hidden in form.hidden_fields %}
                                                        {{ hidden }}
                                                    {% endfor %}
                                                {% endif %}
                                                {{ field.errors.as_ul }}
                                                {{ field }}
                                            </td>
                                        {% endfor %}
                                        </tr>
                                        {% endfor %}
                                        </table>

                                        <div class="form-row hide-element-form" id="ref_div_id_1">
                                          <div class="form-group col-md-6 mb-0">
                                            {{ referencias_form_1.numberPlataforma_referencia|as_crispy_field }}
                                          </div>
                                        </div>



                                        <input onsubmit="formSent" id="form_button" type="submit" value="Save"/>
</form>

Форма набора:

IngresosFormSet = inlineformset_factory(ContactoInfo, IngresosPersonas,
                                             form=IngresosForm, extra=1, min_num=1, max_num=8, validate_min=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...