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

kdt*_*kdt 2 django model django-queryset

我有一个模型,我已经覆盖了delete()方法.因为在批量QuerySet删除时没有调用它,我想禁用QuerySet删除或以某种方式断言它发生.有没有办法做到这一点?

Ben*_*end 5

您可以创建自定义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()
Run Code Online (Sandbox Code Playgroud)