如何在Django的变量中保留表中删除的行



我想删除表中的所有行,但在此之前我想存储旧数据并在旧数据和新数据之间进行一些操作。

这是我试过的。

old_data = Rc.object.all()
Rc.object.all().delete()
# Now I fetch some api and apply saving operation on table

我注意到old_data中的数据已经更新为新的数据。为了测试这一点,我做了如下操作

for rows in old_data:
check = Rc.object.filter(Q(id=dt.id)&Q(modified_date__gt=rows.modified_date)).exist()
print(check)

I found check总是false(具有该id的行存在于表中)但是,当我在old_data = Rc.object.all()之后打印old_data中的每一行时,old_data保持不变(check变为真)并且不更新到新数据。

我错过了什么吗?我如何将所有行存储在变量中,然后删除行?请帮助。

为此,您需要了解Django如何以及何时执行命令:

在你的代码中:

old_data = Rc.object.all()
Rc.object.all().delete()
# Now I fetch some api and apply saving operation on table

行old_data = Rc.object.all()只是一个表达式,不会被执行,直到你使用old_data。例如:如果插入len(old_data)或print(old_data)行,值将被存储。

queryset只有在使用时才会被求值。queryset。