在Django .delete()中,是否可以检索被删除对象的'id'字段?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Django .delete()中,是否可以检索被删除对象的'id'字段?相关的知识,希望对你有一定的参考价值。

当执行下面的查询时,是否有一个机制来返回被删除对象的'id'列表?

>>> MyModel.objects.all().delete()
>>> (430, {'myapp': 430})
答案

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

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

手段 MyModel.objects.all().delete()(或批量删除操作)将在SQL级别执行,所以不会调用每个对象。

如果你想一个一个的删除对象,那么你可以尝试这样做。

deleted = []
for item in MyModel.objects.all():
   deleted.append(item.id)
   item.delete()
print(deleted)

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

以上是关于在Django .delete()中,是否可以检索被删除对象的'id'字段?的主要内容,如果未能解决你的问题,请参考以下文章

Django 从三个表中检索数据

从 Django 查询中的多对多关系中检索项目

django-allauth 检索头像头像

如何使用Django中的外键关系中的任何/ exists / all逻辑检索查询集?

JS 代码不适用于从 Django 模型中检索到的所有数据

如何在 Django 中编辑和删除数据?