当重写时ModelAdmin.save_model(),我希望能够在对象的新值与旧值之间运行一些计算。有什么方法可以让我在更改之前获得“旧对象”及其所有以前的数据吗?
例如,如果我有一个Objectwith 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"
Run Code Online (Sandbox Code Playgroud)
所以你可以通过像这样的数据库查找来获取对象
old_object = self.model.objects.get(id=obj.id)
Run Code Online (Sandbox Code Playgroud)
如果您需要处理它不存在的情况,您可以这样做
try:
old_object = self.model.objects.get(id=obj.id)
except self.model.DoesNotExist:
...
Run Code Online (Sandbox Code Playgroud)
也self.model只是在 ModelAdmin 中设置为您的模型类,以便您可以将其替换为您的模型类
| 归档时间: |
|
| 查看次数: |
2105 次 |
| 最近记录: |