2012-02-22 63 views
0

我有下面的代碼無法設置Django的模型值

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 這有什麼錯與上面的代碼?

回答

3

索引一個查詢集重新運行查詢。提取單個模型,修改字段,保存模型,然後重新索引。

+0

這與Django升級有關嗎?因爲它在Django 1.1中工作。 – thavan 2012-02-22 15:57:43

+0

1.1的聲音是破碎的,然後... – 2012-02-22 16:44:49

0

我有類似你經歷的事,試圖通過索引訪問他們,當值分配給一個查詢集屬性時。

你可以嘗試這樣的:

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

由於一些其他的答案說,索引一個查詢集Django的原因再次訪問數據庫。

如果你不想將更改保存到數據庫中(在這種情況下,你不希望使用.save()),然後提取該模型並將其保存到一個變量:

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

以上將打印1984和3000.它不會保存到數據庫,因此存儲在數據庫中的行保持不變。

0

我@ dm03514同意你過濾後得到的是剛剛的queryset你在它不會反映在數據庫中做出任何改變。 要反映數據庫中的更改,請在對象上使用.save()函數。