When using modelformset_factory, how do you delete objects from the database that are marked for deletion in the form?
I create a modelform_factory model as follows:
ItemFormset = modelformset_factory(Item, ItemModelForm, extra=1, can_delete=True) qset = Item.objects.filter(pr=pr) formset = ItemFormset(queryset=qset)
When the form set returns to POST, I get this data:
if request.method == "POST": formset = ItemFormset(request.POST,queryset=qset) if formset.is_valid(): marked_for_delete = formset.deleted_forms instances = formset.save(commit=False) for item in instances: item.pr = pr item.save()
When the formset.deleted_forms returns, I can get all the objects marked for deletion using formset.deleted_forms , but I cannot figure out how to delete them. I tried to scroll through each of them and delete each separately, but I get an error: Item object can't be deleted because its id attribute is set to None.
In the template, I include {{form.id}} , so each object has an identifier that is passed back to POST.
After calling instances = formset.save(commit=False) I can call formset.deleted_objects , but this is just an empty list: []
Can someone see what I'm doing wrong so that objects are not deleted from the database?
nates source share