Yves
Yves

Reputation: 51

Django formset.js : Can't delete a from

We're using formset.js in our django project to add or delete forms in a form. I can't make the delete button work.

I see in the formset.js (available here https://pypi.python.org/pypi/django-formset-js/0.4.0 )

this code :

Formset.prototype.bindForm = function($form, index) {

    var prefix = this.formsetPrefix + '-' + index;        
    $form.data(pluginName + '__formPrefix', prefix);

    var $delete = $form.find('[name=' + prefix + '-DELETE]');
    // Trigger `formAdded` / `formDeleted` events when delete checkbox value changes
    $delete.change(function(event) {                
        if ($delete.is(':checked')) {
            $form.attr('data-formset-form-deleted', '');
            $form.trigger('formDeleted');
        } else {
            $form.removeAttr('data-formset-form-deleted');
            $form.trigger('formAdded');
        }            
    }).trigger('change');

    var $deleteButton = $form.find(this.opts.deleteButton);

    $deleteButton.bind('click', function() {    
        $delete.attr('checked', true).change();
    });
};

My problem is that i don't find any checkbox in the code. The template shows this :

<div data-formset-body>
    <!-- New forms will be inserted in here -->
        {% for form in formset %}
                <div data-formset-form>
                    {{ form.as_p }}

                    <!-- ajout YCO pour progresser dans le delete 
                    <input type="checkbox" name="form-{{ forloop.counter0 }}-DELETE">
                     -->
                    <div class="hidden">{{ form.DELETE }}</div>

                    <a data-formset-delete-button >{% trans "Delete form" %}</a> 
                    <!--  onclick ="$(this).parent().remove();" -->
                </div>
        {% endfor %}
</div>

Could someone tell me :

Upvotes: 4

Views: 3146

Answers (1)

Masa
Masa

Reputation: 21

When using yourform.DELETE in template, must use with can_delete formset parameter as below.

from django import forms
from django.forms.formsets import formset_factory

class YourForm(forms.Form):
    date = forms.DateField()

YourFormSet = formset_factory(YourForm, can_delete = True)

Django document "Formsets"

Upvotes: 2

Related Questions