是否可以让Django自动删除请求中不存在的表单集?
例如,如果我在加载编辑页面时有三个用HTML表示的内联表单集,并且在请求处理过程中使用javascript删除其中两个,Django发现这两个表单不再是它们并删除它们。 / p>
答案 0 :(得分:8)
是的,可以使用几种不同的方法。
首先要复制Django管理应用程序中的方式,即复选框的标签类似于“删除?”。然后,当您在POST请求中稍后处理formset时,检查复选框是否为True,如果是,则删除该记录。这可能不是你想要的,因为你在问题标题中使用了“动态”这个词:)
因此,第二个动态方法是使用Javascript“隐藏”页面上已删除的记录,并将删除复选框设置为True。然后以与上面第一个选项相同的方式处理formset。有关以这种方式删除formset的代码,请参阅django-dynamic-formset。
第三种动态方式是使用Ajax,当单击删除按钮时,JS调用删除视图来删除记录,并从HTML中删除formset。我不能指出任何示例代码,但我认为上面的第二种方法更好,因为您可以将所有身份验证和标准表单验证代码保存在一个地方。