モデルファイルAdd_cat
とAdd_prod
に2つのクラスがあります。最初のクラスを作成し、2番目のクラスを作成して、ブック名、著者、価格、イメージを作成しました。私は2番目のクラスで外部キーとしてカテゴリを作ってから、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>])
。デフォルトの例外を表示する代わりにカスタム例外メッセージを作成することは可能ですか?djangoでon_delete = models.PROTECTのカスタム例外メッセージを作成する方法
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>
ありがとうございました – Bhanukiran
喜んで助けになりました – e4c5