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

时间:2010-09-28 13:23:48

标签: django model django-queryset

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

1 个答案:

答案 0 :(得分: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()