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

时间:2014-12-16 15:53:05

标签: django django-rest-framework

如果用户更改了对象,如何检查保存?即如果引入了与原始数据库对象的任何差异。在使用pre_save()See object changes in post_save in django rest framework)之前可以使用perform_update,但现在已被{{1}}替换,{{1}}不再包含两个对象(原始对象和修改对象)以进行比较。

1 个答案:

答案 0 :(得分:8)

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

您可以使用序列化程序上的the .validated_data attribute访问传递给请求的已验证数据。这是recommended replacement for .object,应该可以让您确定差异是什么。

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