Django modelformset_factory удаляет формы моделей, помеченные для удаления

При использовании modelformset_factory, как вы удаляете из базы данных объекты, помеченные для удаления в форме?

Я создаю свой modelformset_factory следующим образом:

ItemFormset = modelformset_factory(Item, ItemModelForm, extra=1, can_delete=True)
qset = Item.objects.filter(pr=pr)
formset = ItemFormset(queryset=qset)

Когда набор форм возвращается в POST, я получаю такие данные:

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()

Когда возвращается набор форм, я могу получить все объекты, помеченные для удаления, с помощью formset.deleted_forms, но я не могу понять как на самом деле их удалить.Я пытался пройтись по каждому из них и удалить каждый по отдельности, но получаю сообщение об ошибке: Объект Item не может быть удален, так как его атрибут id имеет значение None.

В шаблоне Я включаю {{form.id}}, поэтому идентификатор каждого объекта передается обратно в POST.

После вызова instances = formset.save(commit=False)Я могу вызвать formset.deleted_objects, но это просто пустой список:[]

Может ли кто-нибудь увидеть, что я делаю неправильно, чтобы сделать объекты не удаляются из базы?

7
задан nates 5 March 2012 в 21:18
поделиться