【发布时间】:2013-12-29 17:36:08
【问题描述】:
这是一个非常简单的问题:有什么好的方法可以禁止在整个 Django 项目中的所有模型上调用批量删除(当然是通过查询集)?
这样做的原因是,完全删除数据几乎总是一个糟糕的选择,而意外的批量删除可能是有害的。
【问题讨论】:
-
我猜这将涉及子类化
QuerySet并根据自己的喜好更改delete方法,子类化默认管理器并让它使用您的自定义查询集,子类化模型 - 创建一个抽象模型并让它使用您的自定义管理器,然后最终让您的所有模型子类化您的自定义抽象模型。 -
Elssar 的方法是我通常会做的。如果您正在处理现有代码库和/或不能确定所有模型都将从您的自定义抽象模型派生,另一种考虑的方法是根据需要修改 QuerySet 的删除方法。
标签: python django django-queryset