在重写ModelAdmin.save_model()
时,我希望能够在对象的新值与旧值之间运行一些计算。有没有什么方法可以让我得到“旧对象”,以及它在更改之前的所有数据?
例如,如果我有一个Object
,其中obj.name
=“foo”,我通过Django管理应用程序更新为现在的obj.name
=“bar”,在保存时,应该相应地打印出以下代码:
from django.contrib import admin
class ObjectAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
old_object = self.get_old_object()
print(old_object.name) # Should print out "foo"
print(obj.name) # Should print out "bar"
2条答案
按热度按时间js81xvg61#
所以你可以通过这样的数据库查询来获取对象
如果你需要处理它不存在的情况,你可以
另外,
self.model
只是设置为ModelAdmin中的模型类,因此您可以将其替换为模型类wyyhbhjk2#
@hwhite4的回答符合预期。但是,如果你想避免数据库查找,你可以这样做:
其中,name是字段的名称。