以下是通过django&s模型在原始查询后更改size
字段的代码段:
ress = models.Resource.objects.raw("select id, size from `main_table`")
for res in ress:
size = res.size
res.size = res.size + "anything"
print res.size # Here it prints the changed string of size field.
for res in ress:
print res.size # it prints the original string of size field.
我想知道为什么size
字段在第二个循环中仍然是原始字段,即使我在第一个循环中更改它?谁能给我一些想法?非常感谢!
答案 0 :(得分:1)
这是因为ress
是一个RawQuerySet并且被懒惰地评估。每次循环遍历它时,都会查询数据库。如果您希望ress
像普通列表一样操作而无需保存,只需将其转换为如下列表:
ress = list(models.Resource.objects.raw("select id, size from `main_table`"))