如何更改某些字段'模型中的值.django中的模型?

时间:2014-03-22 04:00:05

标签: python django django-models

以下是通过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字段在第二个循环中仍然是原始字段,即使我在第一个循环中更改它?谁能给我一些想法?非常感谢!

1 个答案:

答案 0 :(得分:1)

这是因为ress是一个RawQuerySet并且被懒惰地评估。每次循环遍历它时,都会查询数据库。如果您希望ress像普通列表一样操作而无需保存,只需将其转换为如下列表:

ress = list(models.Resource.objects.raw("select id, size from `main_table`"))