При использовании 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
, но это просто пустой список:[]
Может ли кто-нибудь увидеть, что я делаю неправильно, чтобы сделать объекты не удаляются из базы?