django - 如何在一页上编辑子模型
问题描述
如何使用父模型在一个页面上编辑子模型?
我可以在父视图上显示一个子窗体,创建一个子记录,并将其显示在同一个父视图页面上。这是因为我知道当前父模型 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是有效的..有什么想法吗?有很多不同的问题。我明天将创建一个新项目,我会告诉你。
解决方案
正确答案由 Daniel Roseman 发布:
推荐阅读
- kubernetes - 在工作节点上获取错误为“系统中的打开文件过多”
- c# - 如何对 System.Color 类型的列执行 Datatable.Select() 查询?
- ruby-on-rails - 在不发送电子邮件的情况下测试模型回调
- nuget - 推送更改时如何比较文件,但忘记更改 nuspec 版本?
- jsf - 如何在 PrimeFaces 中进行投票?
- flutter - 相对定位小部件
- vue.js - 如何使 Vue-Cli 3 忽略公用文件夹中的文件更改
- visual-studio-code - Visual Studio 代码中的条件任务
- javascript - 将具有相同键、值的 JS 对象合并到数组中
- php - 是否可以向网页显示触发错误消息?