Форма django, содержащая подформы, не показывающая ошибок проверки для подформ - PullRequest
0 голосов
/ 22 апреля 2020

На моей странице в приложении django есть несколько форм, так что основная форма имеет подформы. При отправке я проверяю, чтобы все формы были действительными, и если какая-либо из форм недействительна, она возвращает функцию form_invalid, содержащую основную форму.

Но проблема в том, что если какая-либо из подчиненных форм недопустима, она не отображает никаких ошибок и поля также сбрасываются.

Вот код, когда форма отправляется.

        if player_form.is_valid() and stats_form.is_valid() and contacts_form.is_valid() and extra_stats_form.is_valid():
        player = player_form.save(commit=False)
        stats_form = PlayerStatsForm(request.POST, instance=player.stats)
        stats = stats_form.save()

        contacts_form = PlayerContactsForm(request.POST, instance=player.contacts)
        contacts = contacts_form.save()

        extra_stats_form = PlayerExtraStatsForm(request.POST, instance=player.extra_stats)
        extra_stats = extra_stats_form.save()

        return redirect(self.get_success_url())
    else:

        return self.form_invalid(player_form)`

Функция get_context_data, которая добавляет sub_forms в основную форму игрока.

context.update({
        'object_title_plural': 'Players',
        'list_headings': self.list_headings,
        'form_panel_title': 'Add Player',
        'save_button_text': 'Add Player',
        'search_form': self.form_defaults(PlayerSearchForm()),
        'sub_forms': (self.form_defaults(self.get_form(PlayerStatsForm)),
                      self.form_defaults(self.get_form(PlayerContactsForm)),
                      self.form_defaults(self.get_form(PlayerExtraStatsForm)))
    })

Вот шаблон, в котором визуализируются подформы.

{% block display_subforms %}
                {% if sub_forms %}
                    {% include "dashboard/includes/sub_form.html" %}
                {% endif %}
            {% endblock %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...