Django - 修改Inlineformset删除按钮

时间:2017-09-30 06:36:12

标签: django django-forms inline-formset

我为inlineformset做了自定义UI / UX。

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

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

当用户点击删除时,表格将从使用javascript的页面中删除。

所以,我尝试不使用默认小部件,在模板中渲染字段,但我不知道如何告诉Django女巫字段删除,如果有必要重新调整id的id和名称字段。

1 个答案:

答案 0 :(得分:1)

我遇到此问题的方法是覆盖CheckboxInput小部件类的template_name:

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

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

{应用} /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 那么最好的方法是创建一个扩展BaseFormSet的新类并覆盖 add_fields this answer中建议的方法。