Python Django在管理中编辑内联时触发父模型保存

Python Django在管理中编辑内联时触发父模型保存,python,django,django-admin,Python,Django,Django Admin,我有一个与另一个模型(子模型)有一对多关系的模型(父模型)。父模型的保存方法被覆盖: class ParentModel(models.Model) (...) def save(self, *args, **kwargs): (...) # Do sth with the model super(ParentModel, self).save(*args, **kwargs) class ChildModel(models.Model):

我有一个与另一个模型(子模型)有一对多关系的模型(父模型)。父模型的保存方法被覆盖:

class ParentModel(models.Model)
    (...)

    def save(self, *args, **kwargs):
        (...) # Do sth with the model
        super(ParentModel, self).save(*args, **kwargs)

class ChildModel(models.Model):
    parent= models.ForeignKey(ParentModel)
在管理面板中,多个子模型对象使用StackedLine显示在父模型页面上。如果编辑并保存父字段,则调用save方法。当只编辑子字段时,Django不会调用父字段的save方法(正如预期的那样,因为没有更改)


强制保存父对象的最佳方法是什么,即使只编辑了子对象(这样我的覆盖方法就可以完成它的工作)

您有一些解决方案。从简单到复杂,情况如下:

您可以为
ChildModel
实现一个自定义
save
方法,该方法调用
ParentModel.save

您还可以连接到您的
ChildModel
post\u save
pre\u save
信号

现在,如果您要同时更新大量的
ChildModel
实例,这两种解决方案会很烦人,因为您将多次调用
ParentModel.save
,可能没有目的。
然后,您可能需要使用以下命令:
覆盖您的
ParentModel
ModelAdmin.change\u view
以处理您的逻辑;然而,这是相当棘手的


然而,我对您遇到的行为感到非常惊讶,通过检查源代码,无论如何都应该保存对象;编辑与否

您希望仅在从管理员编辑内联时调用方法,还是在保存您的子模型时调用方法?它仅在管理员中可编辑,因此以较简单的为准。