3
我有我的看法如下代碼Django的模型不保存..完全糊塗了這裏
page = get_object_or_404(Page, site = site, slug = slug)
pagecontents = PageContent.objects.filter(page=page)
pagecontents[0].description = form.cleaned_data['description']
pagecontents[0].save()
print pagecontents[0].description
print form.cleaned_data['description']
當兩個打印語句執行,我得到以下
爲線print pagecontents[0].description
<p>Most important page</p>
爲線form.cleaned_data['description']
<p>Least important page</p>
爲什麼對象沒有被保存?
就是這樣。編碼幾乎沒有睡眠的危險,使你監督這樣清晰的事情。 – arustgi
任何人都可以進一步解釋這一點嗎?爲什麼'pagecontents [0] .description'使對象丟失,但是pagecontent = PageContent.objects.filter(page = page)[0]'和'pagecontent.description = form.cleaned_data ['description']'doesn 「T?對我來說,這些看起來像是一樣的東西。 – rofls
因爲'pagecontents [0]'不是一個變量。這是一個臨時值,它是'[]'('__getitem__')操作的結果,一旦行結束,對該對象的引用就會丟失。所以你必須把這個引用放在一個變量中才能保持。 - 換句話說,'pagecontents [0] .save()'中的'pagecontents [0]'從'pagecontents'中獲取對象的一個新副本,當'save'被調用時它什麼都不做,因爲它沒有改變。 –