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

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

В модели есть такое определение:

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>

По-идее всё должно работать, но не работает. Как сервер выдавал стандартный ответ, так и продолжает. Где у меня ошибка? (Я совсем начинающий) Желательно, ещё в сообщении выдавать список связанных объектов из-за которых невозможно удаление.

попробуйте except ProtectedError: поменять на except: также можете проверить через тот же print срабатывает ли вообще метод def delete(self, request, *args, **kwargs):

Вернуться на верх