在django rest framework 3.0+;中;,如何在更新时检查对象差异?

在django rest framework 3.0+;中;,如何在更新时检查对象差异?,django,django-rest-framework,Django,Django Rest Framework,如果用户更改了对象,如何检查保存?即,如果引入了与原始数据库对象的任何差异。以前可以使用pre_save()(),但现在被perform_update取代,它不再保存两个对象(原始对象和修改对象)进行比较。在Django REST Framework 3中,它只将序列化程序作为参数(而不是对象本身) 您可以在序列化程序上使用访问传递到请求中的已验证数据。这是最重要的,应该允许您确定差异是什么 def perform_update(self, serializer): original_o

如果用户更改了对象,如何检查保存?即,如果引入了与原始数据库对象的任何差异。以前可以使用
pre_save()
(),但现在被
perform_update
取代,它不再保存两个对象(原始对象和修改对象)进行比较。

在Django REST Framework 3中,它只将序列化程序作为参数(而不是对象本身)

您可以在序列化程序上使用访问传递到请求中的已验证数据。这是最重要的,应该允许您确定差异是什么

def perform_update(self, serializer):
    original_object = self.get_object() # or (the private attribute) serializer.instance
    changes = serializer.validated_data

    serializer.save(attr=changed_value) # pass arguments into `save` to override changes

谢谢同时,我以类似的方式解决了这个问题:
changes=serializer.save()