Задать вопрос
Beerenfeld
@Beerenfeld

Как в Django передать своё сообщения пользователю при обработке исключения ProtectedError?

Нужно выдавать пользователю сообщение об ошибке на русском языке, чтобы до него дошло, что именно он творит не так.

В модели есть такое определение:
class Furniture(models.Model):
#...
tex = models.ForeignKey(Tex, on_delete=PROTECT, default=1)


Соответственно, ошибка возникает при наличии связанных объектов в другой таблице.
Нашёл вот такое решение. Меняем представление DeleteView следующим образом:

class texDeleteView(DeleteView):
    model = Tex
    success_url = '/databank/textile/'
    template_name = 'databank/textile/texDelete.html'

    def delete(self, request, *args, **kwargs):
        try:
            return super().delete(request, *args, **kwargs)
        except ProtectedError:
            self.object = self.get_object()
            context = self.get_context_data(
                object=self.object,
                error='Удаление невозможно т.к. существуют связанные объекты'
            )
            return self.render_to_response(context)


Меняем шаблон следующим образом:

<form method="post">
        {% csrf_token %}
        {% if error %}
                {{ error }}
        {% else %}
                <p><center>Вы уверены, что хотите удалить <strong>{{ object.tex_cat }} "{{ object.name }}"</strong>?<br><br>
                <button class="btn btn-danger" type="submit">Удалить</button>
                <a href="{% url 'textile' %}" <button class="btn btn-warning">Отмена</button></a>
                </center>
        {% endif %}
</form>


Не работает. Как сервер выдавал стандартный ответ, так и продолжает. Где у меня ошибка? (я совсем начинающий).
Желательно, ещё в сообщении выдавать список связанных объектов из-за которых невозможно удаление.
  • Вопрос задан
  • 51 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
pawnhearts
@pawnhearts
А трейсбэк он не выдает? Если дебаг режим включить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы