在Django中动态删除内联表单集

Ben*_*lls 8 django django-forms

是否可以让Django自动删除请求中不存在的表单集?

因此,例如,如果我在加载编辑页面时有三个以HTML表示的内联表单集,并且当请求处理时我使用javascript删除其中的两个,Django看到这两个表单不再是他们并删除它们.

Van*_*ale 8

是的,可以使用几种不同的方法.

首先是复制它在Django管理应用程序中完成的方式,这是一个复选框,其标签类似于"删除?".然后,当您在POST请求中稍后处理formset时,检查复选框是否为True,如果是,则删除该记录.这可能不是你想要的,因为你在问题标题中使用了"动态"这个词:)

因此,第二种动态方法是使用Javascript"隐藏"页面上已删除的记录,并将删除复选框设置为True.然后以与上面第一个选项相同的方式处理formset.请参阅django-dynamic-formset以获取以这种方式删除formset的代码.

第三种动态方式是使用Ajax,当单击删除按钮时,JS调用删除视图来删除记录,并从HTML中删除formset.我不能指出任何示例代码,但我认为上面的第二种方法更好,因为您可以将所有身份验证和标准表单验证代码保存在一个位置.