Как добавить non_form_errors в набор форм в Django? - PullRequest
0 голосов
/ 30 апреля 2019

Здравствуйте, в моем проекте мне нужно найти способ добавить non_form_error в набор форм, которые я использую.

Я не могу использовать функцию очистки этого набора форм, потому что мне нужно передать очищенные значения из другихформ.

Сначала я проверяю, что все мои формы и набор форм действительны, а затем я пытаюсь сделать следующее на мой взгляд:

error = ValidationError(_("The total amount of tranches doesn't match the loan amount"),code='tranche_total_amount')
tranche_formset._non_form_errors.append(error)
print(tranche_formset.non_form_errors())

#then I render all my forms again
return self.render_to_response(
    self.get_context_data(
        form = form,
        ... #other forms here,
        tranches = tranche_formset,
    )
)

В терминале я вижу, что ошибкаотображается правильно:

<ul class="errorlist"><li>The total amount of tranches doesn&#39;t match the loan amount</li></ul>

Но в моем шаблоне ошибки не отображаются:

{% if tranches.non_form_errors%}
<div class="alert alert-danger mt-2" role="alert">
    {{ tranches.non_form_errors}}
</div>
{% endif %}

Я что-то упустил?

1 Ответ

0 голосов
/ 30 апреля 2019

Для дальнейшего использования, этот код работает, проблема была в:

return self.render_to_response(
    self.get_context_data(
        form = form,
        ... #other forms here,
        tranches = tranche_formset,
    )
)

Проблема в том, что я перезваниваю get_context_data этого представления, но поскольку я определяю внутри него набор форм, мои non_form_errors не были переданы через контекст.

Вот мое решение, чтобы решить эту проблему:

return self.render_to_response(
    context['tranches_error']=True
)

Затем в get_context_data:

def get_context_data(self, **kwargs):
    context= super(CreateLoan,self).get_context_data(**kwargs)
    if not kwargs.pop('tranches_error', None):
        tranche_formset = TrancheInlineFormset(self.request.POST or None, prefix='tranches')
        context['tranches'] = tranche_formset
    ...
    return context
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...