我正在关注this教程,该教程展示了如何在Django中使用Formsets。本教程使用django-dynamic-formset JQuery插件,该插件支持在Django admin中创建表单集。
我们说我有以下表格:
<form enctype="multipart/form-data" method="post">
{% csrf_token %}
{% for place_form in places_formset %}
<div class="place_formset">
<div class="required field">
<label>{{ place_form.name.label }}</label>
<div class="ui icon input">
{{ place_form.name }}
</div>
</div>
</div>
{% endfor %}
{{ places_formset.management_form }}
<br>
<button type="submit">Save changes</button>
当我渲染表单时,我得到&#34;添加项目&#34;链接,它允许我添加另一个表单到formset。(也意味着js和JQuery加载和工作)但我没有看到应删除每个表单实例的链接。
Here有关于从内联表单集删除项目的解释,但没有说明常规表单集。
到目前为止我做了什么:
1.我试图包括:
{{ place_form.DELETE }}
进入表单,认为django-dynamic-formset将用&#34; remove&#34;替换所有呈现的复选框。链接,但它没有发生。
2.我也尝试使用显式的can_delete渲染set类,但它没有解决问题:
PlaceFormSet = formset_factory(PlaceForm, can_delete=True)
3.我不是按字段呈现表单字段,而是尝试使用{{places_formset}}呈现它。在这种情况下,表单使用删除复选框呈现,但没有替换为删除链接。此外,添加项目链接已消失。
我还可以做些什么来启用删除链接?
答案 0 :(得分:1)
Django-dynamic-formset对我来说无法正常工作。在查看其代码后,我明确地呈现了链接:
<a href="javascript:void(0)" class="delete-row">{% trans 'delete' %}</a>
答案 1 :(得分:1)
加载页面时隐藏了您的formset吗? 如果是这样,即使表单可见,jquery.formset.js中的以下语句也会返回false。
if (row.is(':visible')) {
insertDeleteLink(row);
applyExtraClasses(row, i);
}
这已经提出,并且有一个未解决的问题https://github.com/elo80ka/django-dynamic-formset/issues/54
在问题解决之前,我已从我的jquery.formset.js本地副本中删除了if语句