Как получить измененные поля в сериализаторах REST Framework Django во время обновления? - PullRequest
0 голосов
/ 23 декабря 2019

Есть ли способ получить '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)

Я не хочу запрашивать базу данных для получения old_values, потому что у нас более миллиона строк, и потребуется время, чтобыпринести это.

1 Ответ

3 голосов
/ 23 декабря 2019

Метод update() принимает два параметра instance и validated_data. instance - это экземпляр модели , который будет обновлен , а validated_data - этоdict, которые содержат данные для обновления

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

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

        return super(MySerializer, self).update(<b>instance, validated_data</b>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...