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

标签 django django-forms

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

例如,如果我在加载编辑页面时有三个以 HTML 表示的内联表单集,并且在处理请求时使用 javascript 删除其中两个表单集,则 Django 会发现这两个表单不再是它们的,并将它们删除。

最佳答案

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

首先是复制 Django 管理应用程序中的操作方式,即有一个带有类似于“删除?”标签的复选框。然后,当您稍后在 POST 请求中处理表单集时,您将检查该复选框是否为 True,如果是,则删除该记录。这可能不是您想要的,因为您在问题标题中使用了“动态”一词:)

因此,第二种动态方法是使用 Javascript 在页面上“隐藏”已删除的记录并将删除复选框设置为 True。然后,您可以按照与上面第一个选项相同的方式处理表单集。请参阅django-dynamic-formset以这种方式删除表单集的代码。

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

关于django - 在 Django 中动态删除内联表单集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2357059/

相关文章:

html - 如何添加包含我的产品列表中所有元素的下拉列表

python - 如何为 ManyToMany 记录添加时间戳

python - 运行Django collectstatic时如何忽略目录?

django - 在应用程序中注册 API

Django Admin 内联重复查询

python - 如何在Django Form的clean()方法中获取auto_id?

python - 在 ModelMultipleChoiceField 中定义选项时如何组合两个查询集?

javascript - Django Admin - RelatedObjectLookups - 它如何刷新并在父窗口上设置选择?

python - 何时在 Django 项目中启动 google cloud profiler?

mysql - 使用来自其他表的主键的所有外键填充表