繁体   English   中英

Django从模型填充表格

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM