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'被调用时它什么都不做,因为它没有改变。 –