我在模型文件Add_cat
和Add_prod
中有两个类。通过第一个类我创建了类别,通过第二个类我创建了书名,作者,价格和图像。我将类别作为外国人键入我的第二课,然后我为add_prod创建了一些记录。通过模板我创建了一个删除所选类别的按钮。如果所选类别包含记录我们无法删除它,因为我使用ondelete = models.PROTECT,现在如果我尝试删除包含add_prod表中记录的类别django给我一个这样的例外,("Cannot delete some instances of model 'Add_cat' because they are referenced through a protected foreign key: 'Add_prod.cat'", [<Add_prod: Add_prod object>])
。是否可以创建自定义异常消息而不是显示默认异常?
Models.py,
class Add_cat(models.Model):
category = models.CharField("Name",max_length=25,unique=True,error_messages={'unique':"This category already exists"})
def __unicode__(self):
return u'{0}'.format(self.category)
class Add_prod(models.Model):
book = models.CharField("Book Name",max_length=40)
author = models.CharField("Author",max_length=30)
price = models.PositiveIntegerField("Price")
image = models.ImageField(upload_to='images',null=True)
cat = models.ForeignKey(Add_cat,on_delete=models.PROTECT)
Views.py,
def del_cat(request,pk):
query = Add_cat.objects.get(pk=pk)
query.delete()
messages.add_message(request, messages.INFO, 'Category Deleted')
return redirect("add_cat")
我的模板文件中的删除按钮
<button onclick="return confirm('Are you sure want to delete?');"><a href="{% url 'del_prod' pk=i.pk %}">Delete</a></button>
答案 0 :(得分:1)
除了
之外的简单问题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')