是否可以检索 Django .delete() 中删除的对象的“id”字段?

Rag*_*age 3 django django-models

执行以下查询时,是否有一种机制可以返回已删除对象的“id”列表?

>>> MyModel.objects.all().delete()
>>> (430, {'myapp': 430})
Run Code Online (Sandbox Code Playgroud)

rud*_*dra 5

我认为除非你一一删除对象,否则这是不可能的。来自文档

请记住,只要有可能,这将纯粹在 SQL 中执行,因此在此过程中不一定会调用各个对象实例的 delete() 方法

意味着MyModel.objects.all().delete()(或批量删除操作)将在SQL级别执行,因此每个对象都不会被调用。

如果你想一一删除对象,那么你可以这样尝试:

deleted = []
for item in MyModel.objects.all():
   deleted.append(item.id)
   item.delete()
print(deleted)
Run Code Online (Sandbox Code Playgroud)

但这是非常低效的解决方案,不推荐。