Python 在ModelAdmin中保存模型时如何检查初始数据?

Python 在ModelAdmin中保存模型时如何检查初始数据?,python,django,admin,Python,Django,Admin,我在ModelAdmin中使用save\u model()方法 当特定字段发生变化时,我想做某事(例如,staus)。 所以我想在保存管理员之前知道初始数据,以便在save\u model中检查它 我知道在模型本身中有\uuuuu init\uuuuuu和\uuuu保存方法,但我只想在ModelAdmin中激活代码 下面是示例代码 def save_model(self, request, obj, form, change): if obj.status != xxx (intial

我在
ModelAdmin
中使用
save\u model()
方法

当特定字段发生变化时,我想做某事(例如,staus)。 所以我想在保存管理员之前知道初始数据,以便在
save\u model
中检查它

我知道在
模型
本身中有
\uuuuu init\uuuuuu
\uuuu保存
方法,但我只想在ModelAdmin中激活代码

下面是示例代码

def save_model(self, request, obj, form, change):
    if obj.status != xxx (intial data?) and obj.status == 7:
        # do sth
    super(CustomAdmin, self).save_model(request, obj, form, change)
总结
  • 在保存到admin后,我可以从obj知道初始数据吗
  • 只有在管理员网站上保存时,有什么方法可以做某事吗

提前谢谢

我终于找到了解决办法

我可以通过
form.changed\u data
知道所有更改的数据,所以当特定字段位于
form.changed\u data
时,我可以做某事

像这样

def save_model(self, request, obj, form, change):
    if 'status' in form.changed_data:
        if obj.status != xxx (intial data?) and obj.status == 7:
        # do sth
    super(CustomAdmin, self).save_model(request, obj, form, change)

我希望它能帮助别人

使用(pre_save)@Gahan感谢您的评论。我担心不可能用信号从管理员处保存对象,对吗?逻辑是在任何条件下创建或更新模型实例,它将调用save方法,如果您定义了它,信号将运行。