gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:47:53 26 4
gpt4 key购买 nike

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

最佳答案

在 Django REST 框架 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

关于django - 在 django rest framework 3.0+ 中,如何检查更新时的对象差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27508579/

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