首页 > 解决方案 > 如何在一页上编辑子模型

问题描述

如何使用父模型在一个页面上编辑子模型?

我可以在父视图上显示一个子窗体,创建一个子记录,并将其显示在同一个父视图页面上。这是因为我知道当前父模型 pk 并且我可以显示此特定父模型的所有子对象。

我当前的视图如下所示:

def parent_detail(request, pk):
    parent = get_object_or_404(models.parent, pk=pk)
    children = child.objects.filter(parent=pk) # I call a function that creates a new child by using forms
    return render(request, 'parents/detail.html', {
        'parent': parent, 'children': children, 'form': form
    })

如果我在模板中做这样的事情

{% for child in children %}
   {{ child.text }}
   <form method="post" action="" novalidate>
   {% csrf_token %}
   <button type="submit" method="POST">Edit this child</button>
{% endfor %}

我在每个子条目之前看到“编辑”按钮,但我未能将每个“编辑”按钮与条目相关联。我希望能够在同一视图上编辑父模型及其子模型。

先感谢您!我花了 2 天时间。如果你能帮助我,我将不胜感激

更新:我使用了 inlineformset_factory。我可以包含和编辑记录。但是,我无法删除它们。Django 没有显示任何错误。有效负载显示 Django 发送了正确的 POST 请求,但什么也没发生。

[..]  'child_set-0-child_text': ['message'], 'child_set-0-DELETE': ['on']   [..]

我发现formset是有效的..有什么想法吗?有很多不同的问题。我明天将创建一个新项目,我会告诉你。

标签: django

解决方案


正确答案由 Daniel Roseman 发布:

内联模型表单集


推荐阅读