Найти - Пользователи
Полная версия: Сделать форму невалидной
Начало » Django » Сделать форму невалидной
1
chaotism
Django 1.8
Случилась такая задача как во view после того как форма с файлом валидировась сделать из нее выгрузку данных и если возникнет ошибка, маякнуть об это пользователю, происходит это уже в блоке.
Сокращенно получается так, если в самой форме ошибки, то на странице ошибки отображатся,
если форма валидацию прошла, то на странице ничего не отображается, хотя в логере пишет -
logger.debug(form.is_valid()) - false
logger.debug(form.errors) - переданные ошибки
logger.debug(form.as_p()) - верстку с отмеченными ошибками
    def form_invalid(self, form):
        # #raise Exception(form.is_valid())
        # # raise Exception(form.errors)
        logger.debug(form.is_valid())
        logger.debug(form.errors)
        logger.debug(form.as_p())
        #form.errors.__all__  =  ErrorList('карамба')
        #form.errors["__all__"] = ErrorList('карамба')
        return self.render_to_response(self.get_context_data(form=form))
    def form_valid(self, form):
        try:
            instance = self.import_data(form)
        except Exception, err:
            form.add_error('__all__', ErrorList(errors))
            #TODO: понять как пачкать форму
            form.add_error('file', "Some message")
            form.is_valid = False
            form._errors.__file__  =  ErrorList(errors)
            form._errors['__file__'] = ErrorList(errors)
            form.errors.file  =  ErrorList(errors)
            form.errors['file'] = ErrorList(errors)
            return super(ImportMailingView, self).form_invalid(form)
        return super(ImportMailingView, self).form_valid(form)
С аякс ответом было бы проще, просто серилизовал бы ошибки и вернул
inoks
Почему не в clean это проверять, где и положено это делать?

https://docs.djangoproject.com/en/1.8/ref/forms/validation/
chaotism
Преположим форма из одного поля, типа filefield, в нем я валидирую только то, что файл таблица.
В клеан грузить 10 метровый файл, в принципе можно, конечно, но я хотел во вьюхе в отдельной функцие.
Да и суть вопрса в том, как из form.is_valid() которое True, сделать False, проверка там простая, но почему-то добавленные ошибки в шаблоне не отображаются.
chaotism
вопрос снят, решение описаные вверху подходят, проблемы была в другом куске кода
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB