Прежде чем перейти к этому ответу, обратите внимание на комментарий @DanielRoseman выше: Это действительно неправильный подход.Вы должны определить пользовательский метод clean () в вашей форме и вызвать там вашу конкретную ошибку.
Таким образом, хотя приведенный ниже код отвечает на ваш вопрос, но это НЕ лучшая практика!
form.non_field_errors
- это список.Когда вы говорите
if s in form.non_field_errors
, это означает, что вы проверяете, содержит ли form.non_field_errors
элемент, в точности равный s.Это не так в вашем коде.Ваш form.non_field_errors
содержит элемент (строку), который сам содержит подстроку «уже существует».
Вы хотите просмотреть ошибки и проверить, содержит ли одна из них эту подстроку.Это похоже на мою логику, которую вы хотите использовать в представлении, а не на шаблоне.Например, в представлении:
was_submitted_before = any(["already exists" in s for s in form.non_field_errors])
Затем вы можете передать переменную was_submitted_before
в свой шаблон, и в шаблоне вы можете проверить, верно ли это.