Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为django中的on_delete=models.PROTECT创建自定义异常消息_Python_Django_Django Models - Fatal编程技术网

Python 如何为django中的on_delete=models.PROTECT创建自定义异常消息

Python 如何为django中的on_delete=models.PROTECT创建自定义异常消息,python,django,django-models,Python,Django,Django Models,我在模型文件Add_cat和Add_prod中有两个类。通过第一个类我创建了类别,通过第二个类我创建了书名、作者、,价格和图像。我在第二节课中将类别设置为外键,然后为“添加产品”创建了一些记录。通过模板,我创建了一个用于删除所选类别的按钮。如果所选类别包含记录,我们无法删除它,因为我使用了ondelete=models.PROTECT,现在,如果我试图删除一个包含add_prod表中记录的类别,django会给我一个类似这样的异常,(“无法删除模型'add_cat'的某些实例,因为它们是通过受保

我在模型文件
Add_cat
Add_prod
中有两个类。通过第一个类我创建了类别,通过第二个类我创建了书名、作者、,价格和图像。我在第二节课中将类别设置为外键,然后为“添加产品”创建了一些记录。通过模板,我创建了一个用于删除所选类别的按钮。如果所选类别包含记录,我们无法删除它,因为我使用了ondelete=models.PROTECT,现在,如果我试图删除一个包含add_prod表中记录的类别,django会给我一个类似这样的异常,
(“无法删除模型'add_cat'的某些实例,因为它们是通过受保护的外键引用的:'add_prod.cat'”[

使用try except进行排序的简单问题

def del_cat(request,pk):
    try:
        query = Add_cat.objects.get(pk=pk)
        query.delete()
        messages.add_message(request, messages.INFO, 'Category Deleted')
        return redirect("add_cat")
    except:
       return HttpResponse('Cant delete that row mate')
与发送这样一个简单的错误不同,您可能希望呈现一些模板或添加一条消息,就像您对成功事件所做的那样,但这一次是为了指示无法删除类别,然后重定向

  messages.add_message(request, messages.INFO, 'Category Not Deleted')

很高兴能帮上忙
<button onclick="return confirm('Are you sure want to delete?');"><a href="{% url 'del_prod' pk=i.pk %}">Delete</a></button>
def del_cat(request,pk):
    try:
        query = Add_cat.objects.get(pk=pk)
        query.delete()
        messages.add_message(request, messages.INFO, 'Category Deleted')
        return redirect("add_cat")
    except:
       return HttpResponse('Cant delete that row mate')
  messages.add_message(request, messages.INFO, 'Category Not Deleted')