Django - 修改Inlineformset删除按钮

Django - Modify Inlineformset Delete button

我为内联表单集定制了 UI/UX。

默认情况下,inlineformset 小部件有一个删除按钮。

我想使用 javascript 从 inlineformset dynamic 添加和删除表单。 在某些情况下,删除只是一个按钮而不是复选框,在其他情况下是模式 window.

当用户单击删除时,表单会从页面中删除 javascript。

所以,我尝试在不使用默认小部件的情况下执行此操作,在模板中呈现字段,但我不知道如何告诉 Django 字段删除以及是否有必要重新调整 ID和字段名称。

我对这个问题的解决方案是覆盖 CheckboxInput 小部件的 template_name class:

widgets.CheckboxInput.template_name = 'widgets/delete.html'

我在托管我的自定义小部件的 {app}/widgets.py 中添加了它。由于我在我的应用程序中使用相同的格式,我认为这是唯一的方法。

{app}/templates/widgets/delete.html:

<div class="checkbox checkbox-styled">
<label>
    <input name={{ widget.name }} type="checkbox" value="true" {% if widget.attrs.checked == True %}checked{% endif %}>
    <span>Delete</span>
</label>
</div>

如果不是 inlineformset_factory 那么最好的方法是创建一个新的 class 扩展 BaseFormSet 并覆盖 add_fields 方法中的小部件,如 this answer.

中建议的那样