gpt4 book ai didi

django - 在 ModelAdmin 中,如何在覆盖 `save_model()` 时获取对象的先前值

转载 作者:行者123 更新时间:2023-12-02 20:29:18 25 4
gpt4 key购买 nike

覆盖 ModelAdmin.save_model() 时,我希望能够在对象的新值与旧值之间进行一些计算。有什么方法可以让我获得“旧对象”及其更改前的所有先前数据?

例如,如果我有一个带有 obj.name = "foo"的 Object,我通过 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"

最佳答案

所以你可以像这样通过数据库查找来获取对象

old_object = self.model.objects.get(id=obj.id)

如果你需要处理它不存在的情况,你可以这样做

try:
old_object = self.model.objects.get(id=obj.id)
except self.model.DoesNotExist:
...

此外,self.model 只是在 ModelAdmin 中设置为您的模型类,因此您可以将其替换为您的模型类

关于django - 在 ModelAdmin 中,如何在覆盖 `save_model()` 时获取对象的先前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49217612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com