【发布时间】:2020-02-13 04:26:04
【问题描述】:
是否可以删除许多 Model 实例而不对其进行迭代并在每个实例上调用 .delete()?
假设我们有这样的东西:
objects = [o for o in MyObject.objects.filter(...)]
objects_to_delete = get_validate_objects(objects) # some of objects from objects
现在我想删除objects_to_delete 中的每个MyObject。
还有比这更好/更聪明的方法吗?:
for o in objects_to_delete:
o.delete()
我还想确保所有对象都已删除。 删除对象(之前已删除)期间有关问题的异常/消息会很好。
【问题讨论】:
-
你可以自定义你的 Manager 类,这样
MyObject.valid_objects已经返回了一个带有自定义过滤器语义的过滤器集,然后只是objects.delete()他们 -
我重新打开了这个,因为链接的问题略有不同,单一答案没有回答这个问题。