我是Django的新手,需要清理之前由导入程序创建的符合一定标准的所有现有对象,以便在重新运行导入程序之前进行清理。
我正在尝试找出最有效的方法来完成此操作。目前,我正在导入新对象之前获取现有对象并使用布尔值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()
但我真的需要在整个查询集上运行更新吗?有没有一种方法可以将查询集的快照保存到变量中,然后在导入程序完成后删除它们?
Thing.objects.filter(id__in=current_object_ids)
返回了每个Thing对象。 - Hannah Balendacurrent_object_ids = list(Thing.objects.filter(source=importer).values_list('id', flat=True))
就可以了吧? - Hannah Balenda