aru*_*tgi 3 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']
Run Code Online (Sandbox Code Playgroud)
当两个打印语句执行时,我得到以下内容
为线 print pagecontents[0].description
<p>Most important page</p>
Run Code Online (Sandbox Code Playgroud)
为线 form.cleaned_data['description']
<p>Least important page</p>
Run Code Online (Sandbox Code Playgroud)
为什么对象没有被保存?
Mik*_*one 10
你没有保留改变的对象.
pagecontents[0].description = form.cleaned_data['description']
Run Code Online (Sandbox Code Playgroud)
这会使对象pagecontents[0]变为description,然后丢失对象的跟踪,这会在某个时刻收集垃圾.
pagecontents[0].save()
Run Code Online (Sandbox Code Playgroud)
这使得另一个对象从中pagecontents[0]保存并保存它,因为它没有改变.
pagecontents是一个查询集,所以它不会创建任何对象,直到它实际运行查询,在这种情况下,当你应用[0]它时.
您需要跟踪对象:
pagecontent = PageContent.objects.filter(page=page)[0]
pagecontent.description = form.cleaned_data['description']
pagecontent.save()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4936 次 |
| 最近记录: |