首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止删除模型实例?

如何防止删除模型实例?
EN

Stack Overflow用户
提问于 2016-08-06 01:25:50
回答 1查看 931关注 0票数 0

如果is_available_returnedFalse,我想使用一种方法来防止管理员删除SingleBook实例。逻辑是,在归还图书之前,不应该删除借阅图书的记录。我更喜欢一种适当的方式来处理这个问题,而不是抛出一个异常。任何帮助都将不胜感激。

代码语言:javascript
复制
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:

代码语言:javascript
复制
Django==1.9.8
django-material==0.8.0
django-model-utils==2.5.1
psycopg2==2.6.2
wheel==0.24.0
EN

回答 1

Stack Overflow用户

发布于 2016-08-06 20:46:46

代码语言:javascript
复制
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()方法的执行,同时将异常返回到它被调用的位置

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38794808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档