【问题标题】:How to modify unchanged model admin inlines?如何修改未更改的模型管理内联?
【发布时间】:2022-01-18 17:57:13
【问题描述】:

这两种情况的重复:

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

我的目标是在更改父模型管理实例时修改我的模型管理堆叠内联对象(保存前或保存后无关紧要)。我尝试在模型管理类中覆盖save_formsetsave_related,如Django 文档herehere 中使用commit=False 编写的那样。例如:

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) 方法仅在它们在 Django 管理面板上发生更改时返回内联表单实例,如 django docs 中所述,但如果它们未更改,它不会返回内联对象列表,即使在发送 commit=False 之后也是如此.我需要编辑这些内联对象,无论它们是否在管理面板上进行了更改。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-09
      • 2012-10-25
      • 2011-07-19
      • 1970-01-01
      • 2022-07-20
      • 2016-01-03
      • 2012-10-10
      • 2011-07-18
      • 2011-09-09
      相关资源
      最近更新 更多