Django模型删除:实例删除与查询集删除

5 投票
1 回答
3138 浏览
提问于 2025-04-17 21:01

我想知道删除一个模型实例的最佳方法。

实例删除的例子:

myModel = MyModel.objects.get(id=1)
myModel.delete()

查询集删除的例子:

MyModel.objects.filter(id=1).delete()

实例删除和查询集删除这两种方法有什么不同?使用查询集删除而不是实例删除会有什么副作用,反之亦然?

附注:如果你觉得你的回答与版本有关,请假设我是在问Django版本大于等于 1.6 的情况。

1 个回答

4

实例删除需要进行两个操作:一个是选择你要删除的对象,另一个是实际删除这个对象。

而查询集删除只需要一个操作:直接删除。

实例删除的副作用是:myModel.pk(通常等于myModel.id)在删除后会变成None

撰写回答