使用 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 object can't be deleted because its id attribute is set to None.
在我包含的模板中{{form.id}}
所以每个对象都有它的 ID 在 POST 中传回。
打电话后instances = formset.save(commit=False)
我可以打电话formset.deleted_objects
但这只是一个空列表:[]
谁能看到我做错了什么,导致对象不会从数据库中删除?