无法设置django模型值

时间:2012-02-22 14:54:23

标签: python django django-models

我有以下代码

exinfo = ExistingCardInfo.objects.filter(CustID=custid)   
trail4 = exinfo[0].trail4
logger.debug(exinfo[0].trail4) # prints 1984
exinfo[0].trail4=3000
logger.debug(exinfo[0].trail4) # again prints 1984

最初的trail4值是1984.在我将trail4值设置为3000后,我仍然得到了1984。 上面的代码有什么问题吗?

4 个答案:

答案 0 :(得分:3)

索引查询集会重新运行查询。提取单个模型,修改字段,保存模型,然后重新索引。

答案 1 :(得分:0)

在通过索引访问查询集属性时,尝试将值分配给查询集属性时,我遇到过与您类似的情况。

你可以试试像:

excardinfo = exinfo[0]
excardinfo.trail4 = 3000
excardinfo.save()

答案 2 :(得分:0)

正如其他一些答案所说,索引查询集会导致django再次访问数据库。

如果您不想将更改保存到数据库(在这种情况下,您不希望使用.save()),则提取该模型并将其保存到变量:

thismodel = exinfo[0]
print thismodel.trail4
thismodel.trail4 = 3000
print thismodel.trail4

以上将打印1984和3000.它不会保存到数据库,因此存储在数据库中的行保持不变。

答案 3 :(得分:0)

我同意@ dm03514在过滤器只是查询集后得到的内容,您在其中所做的任何更改都不会反映在数据库中。 要反映数据库中的更改,请在对象上使用.save()函数。