与 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 不显示删除链接的主要内容,如果未能解决你的问题,请参考以下文章

LDAP 与 MYSQL .. JA-SIG CAS 与 LDAP 与 CAS 与 MySQL

python网络编程基础(线程与进程并行与并发同步与异步)

=与==&与&&| 与 || 的区别

与 0 进行比较与与某个值进行比较是不是更快?

三.工具与市场-债券与债务股票与公司

RESTfulREST 与 RESTful 理解与实践