与django-dynamic-formset

时间:2017-01-27 15:23:59

标签: jquery django django-forms

我正在关注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}}呈现它。在这种情况下,表单使用删除复选框呈现,但没有替换为删除链接。此外,添加项目链接已消失。

我还可以做些什么来启用删除链接?

2 个答案:

答案 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语句

相关问题