[英]Django populate Form from Model
的Django 2.0.2
Python 3.6.3
嗨,
我仍在尝试通过首先进入django项目来学习Python。 我有一个扩展“用户”模型的“配置文件”模型。 我有一个用于个人资料的ModelForm
。 我有一个create
动作,可以创建一个新的配置文件并保存它和用户信息。 一切正常。
我正在尝试添加其他CRUD
操作,并从“编辑”方法开始。 我已经阅读了“从模型创建表单” 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
在表单中生成缺失值错误。
我是否缺少将模型数据填充到表单的步骤?
如果请求是POST,则仅需要检查表单是否有效。
我也建议研究已经结构完善且易于扩展的Django CBV。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.