Django - 修改Inlineformset删除按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django - 修改Inlineformset删除按钮相关的知识,希望对你有一定的参考价值。

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

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

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

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

因此,我尝试在不使用默认小部件的情况下执行此操作,在模板中渲染字段,但我不知道如何告知Django女巫字段要删除,如果有必要重新调整字段的ID和名称。

答案

我解决这个问题的方法是只覆盖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的新类,并在this answer中建议的add_fields方法中覆盖小部件。

以上是关于Django - 修改Inlineformset删除按钮的主要内容,如果未能解决你的问题,请参考以下文章

django - 具有多个 ForeignKey 的 inlineformset_factory

django:如何在表单向导中使用 inlineformset?

在 Django inlineformset_factory 中过滤查询集

在 Django 的 inlineformset_factory 中选择外键元素的子集

在inlineformset的形式中,我怎么知道哪些是我的默认表单字段,哪些是Django添加的字段?

Django formset_factory vs modelformset_factory vs inlineformset_factory