与 django-dynamic-formset 一起使用的 Django Formset 不显示删除链接
Posted
技术标签:
【中文标题】与 django-dynamic-formset 一起使用的 Django Formset 不显示删除链接【英文标题】:Delete links are not displayed for Django Formsets used together with django-dynamic-formset 【发布时间】:2017-06-13 08:04:26 【问题描述】:我正在关注this 教程,该教程展示了如何在 Django 中使用表单集。本教程使用 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>
当我呈现表单时,我得到“添加项目”链接,它允许我向表单集添加另一个表单。(也意味着 js 和 JQuery 已加载并正在工作)但我没有看到应该删除每个表单的链接实例。
Here 有关于从内联表单集中删除项目的解释,但对常规表单集没有任何说明。
到目前为止我做了什么:
1.我已尝试包括:
place_form.DELETE
进入表单认为 django-dynamic-formset 将用“删除”链接替换所有呈现的复选框,但它没有发生。
2.我也尝试过使用显式 can_delete 渲染集合类,但没有解决问题:
PlaceFormSet = formset_factory(PlaceForm, can_delete=True)
3.我尝试使用 places_formset 来呈现它,而不是逐个字段呈现表单。在这种情况下,表单使用删除复选框呈现,但没有替换为删除链接。另外添加项目链接也消失了。
我还能做些什么来启用删除链接?
【问题讨论】:
【参考方案1】:页面加载时您的表单集是否隐藏? 如果是这样,即使在表单可见之后,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 语句
【讨论】:
【参考方案2】:Django-dynamic-formset 对我来说不能正常工作。查看其代码后,我已明确呈现链接:
<a href="javascript:void(0)" class="delete-row">% trans 'delete' %</a>
【讨论】:
以上是关于与 django-dynamic-formset 一起使用的 Django Formset 不显示删除链接的主要内容,如果未能解决你的问题,请参考以下文章