gpt4 book ai didi

django - 创建 django 查询集快照的最有效方法?

转载 作者:行者123 更新时间:2023-12-02 16:12:40 25 4
gpt4 key购买 nike

我是 Django 新手,我需要在导入器重新运行之前清理满足导入器先前创建的一组特定条件的所有现有对象。

我正在尝试找出最有效的方法来做到这一点。目前,我在导入新对象并使用 bool 值 to_be_deleted=True 更新它们之前获取现有对象:

Thing.objects.filter(source=importer).update(to_be_deleted=True)
import_new_things(source=importer)
Thing.objects.filter(to_be_deleted=True).delete()

但是我真的需要对整个查询集运行更新吗?有没有办法将查询集的快照保存到变量中,然后在导入器完成后删除它们?

最佳答案

要保存查询集的“快照”,您只需获取 ID 列表即可。

# Get all the objects IDs
current_object_ids = list(Thing.objects.filter(source=importer).values_list('id', flat=True))

然后您可以调用您的函数,如果成功,您可以删除其他对象。

try:
import_new_things(source=importer)
except:
# do something
else:
# Run your delete
Thing.objects.filter(id__in=current_object_ids).delete()

关于django - 创建 django 查询集快照的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55505165/

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