Injectar erros em forma já validado?

votos
82

Após os form.Formvalida os valores de entrada do utilizador que passá-las para um processo separado (externa) para posterior processamento. Este processo externo pode potencialmente encontrar mais erros nos valores.

Existe uma maneira de injetar esses erros no formulário já validados para que eles possam ser exibidos por meio dos métodos de exibição de erro forma usual (ou existem melhores abordagens alternativas)?

Um sugestões era para incluir o processamento externo na validação de formulário, que não é ideal porque o processo externo faz muito mais do que simplesmente validar.

Publicado 09/10/2008 em 20:45
fonte usuário
Em outras línguas...                            


3 respostas

votos
84

Form._errorspode ser tratada como um dicionário padrão. É considerada boa forma de usar a ErrorListclasse, e para acrescentar erros à lista existente:

from django.forms.util import ErrorList
errors = form._errors.setdefault("myfield", ErrorList())
errors.append(u"My error here")

E se você quiser adicionar erros não-campo, usar django.forms.forms.NON_FIELD_ERRORS(padrão "__all__") em vez de "myfield".

Respondeu 09/10/2008 em 20:49
fonte usuário

votos
79

Para Django 1.7+, você deve usar form.add_error()em vez de acessar form._errorsdiretamente.

Documentação: https://docs.djangoproject.com/en/stable/ref/forms/api/#django.forms.Form.add_error

Respondeu 21/01/2015 em 01:45
fonte usuário

votos
14

Você pode adicionar detalhes de erro adicionais ao formulário _errorsatributo diretamente:

https://docs.djangoproject.com/en/1.5/ref/forms/validation/#described-later https://docs.djangoproject.com/en/1.6/ref/forms/validation/#modifying-field-errors

Respondeu 09/10/2008 em 20:48
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more