【发布时间】:2011-04-18 07:23:52
【问题描述】:
我有一个模型,它的 delete() 方法被我覆盖了。因为这不是在批量 QuerySet 删除时调用的,所以我想禁用 QuerySet 删除或以某种方式断言它不会发生。有什么办法吗?
【问题讨论】:
标签: django model django-queryset
我有一个模型,它的 delete() 方法被我覆盖了。因为这不是在批量 QuerySet 删除时调用的,所以我想禁用 QuerySet 删除或以某种方式断言它不会发生。有什么办法吗?
【问题讨论】:
标签: django model django-queryset
您可以创建一个自定义的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()
【讨论】: