Django - 修改 Inlineformset 删除按钮
Posted
技术标签:
【中文标题】Django - 修改 Inlineformset 删除按钮【英文标题】:Django - Modify Inlineformset Delete button 【发布时间】:2018-03-12 00:46:31 【问题描述】:我为内联表单集定制 UI/UX。
默认情况下,inlineformset 小部件有一个删除按钮。
我想使用 javascript 从 inlineformset 动态中添加和删除表单。 在某些情况下删除只是一个按钮而不是复选框,在其他情况下是在模式窗口中。
当用户单击删除时,表单会使用 javascript 从页面中删除。
所以,我尝试在不使用默认小部件的情况下执行此操作,在模板中呈现字段,但我不知道如何告诉 Django 女巫字段删除以及是否有必要重新调整字段的 ID 和名称。
【问题讨论】:
【参考方案1】:我对这个问题的解决方案是覆盖 CheckboxInput 小部件类的 template_name:
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,那么最好的方法是创建一个扩展 BaseFormSet 的新类并覆盖 add_fields中的小部件> 类似this answer 中建议的方法。
【讨论】:
以上是关于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