我目前正在尝试覆盖DeleteView
的继承delete
方法来实现我想要的行为。但是,我对 Django 框架和 Python 比较陌生,不知道该怎么做。
目标是删除一个对象,如果ProtectedError
发生,confirm_delete
模板应显示描述问题的错误消息,并且不应将用户重定向到success_url
. 我的第一种方法,类似于其他形式,是将错误打包到form.non_field_error
中,但我不知道如何访问它。
def delete(self, request, *args, **kwargs):
self.object = self.get_object()
success_url = self.get_success_url()
try:
self.object.delete()
# Redirect to success_url
except ProtectedError:
pass
# Add error to confirm_delete template / delete Form and stay on the delete confirmation page (don't delete)
return HttpResponseRedirect(success_url)
那么,用户怎么可能只在成功删除后才被重定向到success_url,但如果出现ProtectedError,并且没有发生重定向,confirm_delete 模板上会出现错误消息?