如果is_available_returned为False,我想使用一种方法来防止管理员删除SingleBook实例。逻辑是,在归还图书之前,不应该删除借阅图书的记录。我更喜欢一种适当的方式来处理这个问题,而不是抛出一个异常。任何帮助都将不胜感激。
class SingleBook(models.Model):
serial_number = models.CharField(primary_key=True , max_length=150, blank=False)
book_id = models.ForeignKey(LibraryBook, on_delete=models.CASCADE)
is_available_returned = models.BooleanField(default=True)
def __unicode__(self):
return unicode(self.book_id)PS:
Django==1.9.8
django-material==0.8.0
django-model-utils==2.5.1
psycopg2==2.6.2
wheel==0.24.0发布于 2016-08-06 20:46:46
from django.core.exceptions import ValidationError
from django.db.models.signals import pre_delete
from django.dispatch import receiver
@receiver(pre_delete, sender=SingleBook)
def delete_is_available_returned(sender, instance, **kwargs):
if instance.is_available_returned:
raise Exception('This book cant be deleted')在信号中引发异常应停止delete()方法的执行,同时将异常返回到它被调用的位置
https://stackoverflow.com/questions/38794808
复制相似问题