如何在更新期间获取 Django REST 框架序列化程序中的 changed_fields?

Cha*_*ngh 0 django django-rest-framework

有什么方法可以'changed_fields'在使用 更新模型之前获得ModelSerializer

我想要这样的功能:

class MySerializer(serializers.ModelSerializer):
   class Meta:
      fields = '__all__'
      model = MyModel

  def update(self, validated_data):
      // Access old values and new values of model so that I can compare them.
      super(MySerializer, self).update(validated_data)
Run Code Online (Sandbox Code Playgroud)

我不想查询数据库来获取old_values,因为我们有超过数百万行,需要时间来获取。

JPG*_*JPG 7

update()方法采用两个参数instancevalidated_data。该instance模型实例是将要更新validated_data是一个dict包含数据进行更新

class MySerializer(serializers.ModelSerializer):
    class Meta:
        fields = '__all__'
        model = MyModel

    def update(self, instance, validated_data):
        for field, value in validated_data.items():
            new_value = value
            old_value = getattr(instance, field)

        return super(MySerializer, self).update(instance, validated_data)
Run Code Online (Sandbox Code Playgroud)