Django:防止模型上的 QuerySet 删除?

Posted

技术标签:

【中文标题】Django:防止模型上的 QuerySet 删除?【英文标题】:Django: preventing QuerySet deletions on a model? 【发布时间】:2011-04-18 07:23:52 【问题描述】:

我有一个模型,它的 delete() 方法被我覆盖了。因为这不是在批量 QuerySet 删除时调用的,所以我想禁用 QuerySet 删除或以某种方式断言它不会发生。有什么办法吗?

【问题讨论】:

【参考方案1】:

您可以创建一个自定义的QuerySet 类并在管理器中使用它,例如:

from django.db import models

class NoDeleteQuerySet(models.query.QuerySet):
    def delete(self):
        raise NotImplementedError("can't delete this queryset")

class NoDeleteQuerySetManager(models.Manager):
    def get_query_set(self):
        return NoDeleteQuerySet(self.model)

class MyModel(model.Model):
    objects = NoDeleteQuerySetManager()

【讨论】:

以上是关于Django:防止模型上的 QuerySet 删除?的主要内容,如果未能解决你的问题,请参考以下文章

明确限制 Django QuerySet

防止在 Django 模型中删除

django queryset 打印产品及其模型

django中Queryset的删除问题分页问题

按模型的属性(不是字段)对 Django QuerySet 进行排序

python Django教程 之 模型(数据库)自定义Field数据表更改QuerySet API