Django模型没有保存..在这里完全迷茫

时间:2011-09-01 05:01:19

标签: django django-models django-forms

我在视图中有以下代码

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>

为什么对象没有被保存?

1 个答案:

答案 0 :(得分:10)

您没有保留更改的对象。

pagecontents[0].description = form.cleaned_data['description']

这会从pagecontents[0]创建一个对象,更改description,然后丢失对象的跟踪,这会在某个时刻收集垃圾。

pagecontents[0].save()

这使得另一个对象来自pagecontents[0]并保存它,因为它没有改变,所以什么都不做。

pagecontents是一个查询集,因此在实际运行查询之前不会创建任何对象,在这种情况下,当您对其应用[0]时。

您需要跟踪对象:

pagecontent = PageContent.objects.filter(page=page)[0]
pagecontent.description = form.cleaned_data['description']
pagecontent.save()