如何修改未更改的模型管理内联?

How to modify unchanged model admin inlines?

这两个的重复类型:

但我仍然想知道在以后的 Django 更新中是否有更好的方法来做到这一点?

我的目的是在更改父模型管理实例时修改我的模型管理堆叠内联对象(预先或 post 保存无关紧要)。我尝试在 Django 文档 here and here 中使用 commit=False 覆盖模型管理 class 中的 save_formsetsave_related。例如:

def save_formset(self, request, form, formset, change):
    instances = formset.save(commit=False)
    for instance in instances:
       instance.any_field = "value"
       instance.save()

方法 formset.save(commit=False) return 内联表单实例仅当它们在 Django 管理面板上更改时如 django docs 所述,但它没有 return 列表即使在发送 commit=False 之后,如果内联对象没有更改,它们也是如此。我需要编辑这些内联对象,无论它们是否在管理面板上被更改。

我找不到预保存处理这些未更改的内联表单的合法方法。所以我最终做了 post 保存处理。

def save_formset(self, request, form, formset, change):
    super().save_formset(request, form, formset, change)
    forms = formset.forms
    for form in forms:
        obj = form.instance
        # Do anything with obj
        obj.save()