如何使用新的 pk id 更新 formset?

How to update formset with new pk id?

我有一个使用默认 {{ formset }} 呈现的表单集。提交表单后,页面会 post 返回自身。

问题是在创建新实例时,包含 ID 的字段仍然像 <input id="id_form-0-id" name="form-0-id" type="hidden"> 一样空白。因此,如果我在返回后重新提交表单,它最终会创建新实例而不是更新新创建的实例。如果我刷新页面然后字段包含 ids <input id="id_form-0-id" name="form-0-id" type="hidden" value="18">.

这是我的控制器函数:

def main_categories (request):
    dict = {}
    FormSet = modelformset_factory (MainCategory, formset = MainCategoryFormSet, fields = ['name'], extra = 1, can_delete = True)

    if request.method == 'POST':
        formset = FormSet (request.POST)

        if formset.is_valid ():
            with transaction.atomic ():
                formset.save ()
    else:
        formset = FormSet ()

    dict ['formset'] = formset
    return render (request, 'equipment/admin/main_categories.html', dict)

如果要编辑以前提交的查询集,必须将查询集提供到 FormSet class。参见 documentation