Как передать значение переменной из модели для просмотра с помощью ValidationError (Django) - PullRequest
0 голосов
/ 14 февраля 2020

Я занимаюсь разработкой приложения на Django.

В этом приложении есть форма файла.

В функции просмотра, связанной с базой. html Я реализовал сообщение система, которая публикует сообщение, если пользователь неправильно скопировал форму и пытается отправить ее.

messages.error(request, ('ERROR: Compile the form properly!'))

В моем models.py у меня есть чистая функция, которая предотвращает проверку формы с помощью выдает ошибку проверки и печатает сообщение в консоли:

def clean(self):
    if not (self.file):
        raise ValidationError("No file selected.")

    if not self.Glossary_file.lower().endswith('.xls', '.xlsx', '.xlsm' '.csv', '.xml', '.xlt'):
        raise ValidationError("The selected file is not a spreadsheet.")

Однако эти два сообщения перезаписываются строкой в ​​views.py.

Давайте представим, что я перезаписываю свою чистую метод, подобный этому:

def clean(self):
    if not (self.file):
        error_message="No file selected."
        raise ValidationError("who cares, it gets overwritten by view message")


    if not self.Glossary_file.lower().endswith('.xls', '.xlsx', '.xlsm' '.csv', '.xml', '.xlt'):
        error_message="The selected file is not a spreadsheet."
        raise ValidationError("who cares, it gets overwritten by view message")

Мне нужно что-то подобное в моем views.py , заменив другую строку:

messages.error(request, (error_message))

но я не знать, как передать error_message из models.py в views.py.

Ошибка ValidationError не позволяет мне добавить return в мою чистую функцию, которую я мог бы использовать для возврата error_message.

Вот моя функция просмотра, соответствующая странице формы:

def add_file(request):

    if request.method=='POST':

        form = file_form(request.POST, request.FILES)

        if form.is_valid():
            form.save()
            insert_attempt_output="correct"

            messages.success(request, ("ok"))


            return redirect('add_file_template')

        else:
            insert_attempt_output="error"
            messages.error(request, ('ERROR: Compile the form properly!'))

            return render(request, 'add_file_template.html', {'insert_attempt_output':insert_attempt_output})

    else:
        return render(request, 'add_file_template.html', {})
...