如果用户更改了对象,如何检查保存?即如果引入了与原始数据库对象的任何差异。在使用pre_save()
(See object changes in post_save in django rest framework)之前可以使用perform_update
,但现在已被{{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