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