Как обновить несколько полей экземпляра в сериализаторе DRF? - PullRequest
0 голосов
/ 01 марта 2019

В документах DRF: https://www.django -rest-framework.org / tutorial / 1-serialization / # creation-a-serializer-class

Показано, как обновитьсуществующий экземпляр с использованием метода update.Но приведенный код является очень повторяющимся и имеет проблему с СУХОЙ, если модель обновляется.Как можно передать validated_data в instance один раз перед тем, как вызвать save?

    def update(self, instance, validated_data):
        """
        Update and return an existing `Snippet` instance, given the validated data.
        """
        instance.title = validated_data.get('title', instance.title)
        instance.code = validated_data.get('code', instance.code)
        instance.linenos = validated_data.get('linenos', instance.linenos)
        instance.language = validated_data.get('language', instance.language)
        instance.style = validated_data.get('style', instance.style)
        instance.save()
        return instance

1 Ответ

0 голосов
/ 01 марта 2019

Вы можете использовать setattr()

def update(self, instance, validated_data):
    for key,value in validated_data.items():
        setattr(instance,key,value)
    instance.save()
    return instance
...