Django 2.0.2
Python 3.6.3
您好,
我仍然试图通过首先进入django项目来学习Python。我有一个“配置文件”模型,扩展了“用户”模型。我的个人资料有ModelForm
。我有一个create
操作,可以创建新配置文件并保存它和用户信息。一切正常。
我正在尝试添加其他CRUD
操作,并开始使用“编辑”方法。我已阅读"Creating forms from models" django doc。
我看到他们的成语(从上面的链接复制):
>>> class ArticleForm(ModelForm):
... class Meta:
... model = Article
... fields = ['pub_date', 'headline', 'content', 'reporter']
# Creating a form to add an article.
>>> form = ArticleForm()
# Creating a form to change an existing article.
>>> article = Article.objects.get(pk=1)
>>> form = ArticleForm(instance=article)
在我的代码中,我正在尝试:
1 def edit(request, pk):
2 try:
3 profile = Profile.objects.get(pk=pk)
4
5 if request.method == 'POST':
6 form = ProfileForm(request.POST, instance=profile)
7 else:
8 form = ProfileForm(instance=profile)
9
10 if form.is_valid():
11 profile = form.save(commit=False)
12 profile.user = request.user
13 profile.save()
14 my_render = render(request, 'Members/index.html', {
15 'profile': profile
16 })
17 else:
18 my_render = render(request, 'Members/profile.html', {
19 'profileEdit': form,
20 'profileState': "edit"
21 })
22 except Profile.DoesNotExist:
23 raise Http404("No Profile matches the given query.")
24
25 return my_render
因此,在我的调试器中,我可以创建一个帐户。然后,我可以单击触发此编辑操作的按钮。
第3行:产生我想要编辑的配置文件的有效副本(在我看来)。
第8行是下一行执行的。它会生成一个form
对象,但不会填充配置文件实例。
第18行是下一个因为表单显然无效。 render
在表单中生成缺失值错误。
我是否错过了使用模型数据填充表单的步骤?
答案 0 :(得分:1)
如果请求是POST,您只需要检查表单是否有效。
此外,我建议调查已经完美结构且易于扩展的Django CBV。