带有表单集的 Django 脆皮表单不显示删除复选框

Django crispy form with formset does not show delete checkbox

我有一些代码结构与这个例子非常相似:https://gist.github.com/ibarovic/3092910

除了每个 Book 元素后面的删除复选框根本没有显示外,一切都运行良好。如果我改变

{% crispy formset formset.form.helper %}

{% crispy formset %}

已显示删除复选框,但表单不再有效(b/c HTML 表单标签不仅使用了一次)。

我怀疑 BookForm 不知道这些复选框(b/c 它们稍后以某种方式被 inlineformset_factory 添加),因此它们不会被添加到布局中并被忽略。不过我不知道如何规避它。

多亏了这个我找到了解决方案:Django crispy-forms, BaseGenericInlineFormSet & allow_delete

在 BookForm(重复多次)init 中,您可以添加如下内容:

self.helper = FormHelper(form=self) # or manual layout
self.helper.form_tag = False

i = self.helper.layout.fields.index('title')
self.helper.layout.insert(i+1, layout.Field("DELETE"))

然后将大写字母 "DELETE" 字段添加到每个 BookForm 中...