如何从Django DeleteView发送错误消息?
假设有两种模型如何从Django DeleteView发送错误消息?,django,django-views,django-class-based-views,Django,Django Views,Django Class Based Views,假设有两种模型Parent和Child父项到子项是一对多关系 我正在为父模型创建DeleteView。在删除之前,我需要检查父项是否有子项。如果没有子项,则像往常一样删除父项模型。但如果有子项,则需要将错误消息发送到DeleteView确认页面 如何使用DeleteView实现这一点?您可以覆盖delete方法并使用 DeleteView继承。您可以在子模型中添加on_delete=PROTECTED,并覆盖视图中的delete方法以捕获ProtectedError异常。有关错误消息,请参阅Dj
Parent
和Child
<代码>父项到子项是一对多关系
我正在为父模型创建DeleteView。在删除之前,我需要检查父项
是否有子项
。如果没有子项
,则像往常一样删除父项
模型。但如果有子项
,则需要将错误消息发送到DeleteView确认页面
如何使用DeleteView实现这一点?您可以覆盖
delete
方法并使用
DeleteView继承。您可以在子模型中添加on_delete=PROTECTED
,并覆盖视图中的delete方法以捕获ProtectedError
异常。有关错误消息,请参阅Django的
models.py:
class Child():
#...
myParent = models.ForeignKey(Parent, on_delete=PROTECTED)
views.py:
from django.db.models import ProtectedError
#...
class ParentDelete(DeleteView):
#...
def delete(self, request, *args, **kwargs):
"""
Call the delete() method on the fetched object and then redirect to the
success URL. If the object is protected, send an error message.
"""
self.object = self.get_object()
success_url = self.get_success_url()
try:
self.object.delete()
except ProtectedError:
messages.add_message(request, messages.ERROR, 'Can not delete: this parent has a child!')
return # The url of the delete view (or whatever you want)
return HttpResponseRedirect(success_url)
from django.db.models import ProtectedError
#...
class ParentDelete(DeleteView):
#...
def delete(self, request, *args, **kwargs):
"""
Call the delete() method on the fetched object and then redirect to the
success URL. If the object is protected, send an error message.
"""
self.object = self.get_object()
success_url = self.get_success_url()
try:
self.object.delete()
except ProtectedError:
messages.add_message(request, messages.ERROR, 'Can not delete: this parent has a child!')
return # The url of the delete view (or whatever you want)
return HttpResponseRedirect(success_url)