gpt4 book ai didi

python - 通过ORM删除多个Django对象

转载 作者:行者123 更新时间:2023-12-01 00:27:56 25 4
gpt4 key购买 nike

是否可以删除多个 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()

此外,我想确保所有对象都已删除。关于删除对象(之前删除)期间出现问题的异常/消息会很好。

最佳答案

您可以删除查询集;要获取包含列表中对象的查询集,您可以执行以下操作:

objects_to_delete = MyObject.objects.filter(pk__in=[o.pk for o in objects])
objects_to_delete.delete()

但理想情况下,您应该以这样的方式编写“get_validate_objects”:它将查询集作为参数并对查询集进行所有检查(使用filter()和exclude()等)。然后你可以立即对结果调用 .delete() 。但这当然并不总是那么容易。

关于python - 通过ORM删除多个Django对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58412462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com