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

У меня есть модель, где я пытаюсь создать объект с использованием DRF. В классе модели есть метод, который я хотел бы вызвать перед сохранением сериализатора. Примерно так:

class MyModel(models.Model):
    ...
    def do_something(self):
        ...

Код сериализатора:

serializer = MyModelSerializer(data=request.data)
serializer.obj.do_something() # Does not work
serializer.save()

Надеюсь, вы, ребята, поняли идею.

1 Ответ

2 голосов
/ 03 ноября 2019

Afaik DRF не поддерживает такие вещи, как save(commit=False), но, в качестве альтернативы, вы можете переопределить MyModelSerializer.create метод:

class MyModelSerializer(ModelSerializer):
    class Meta:
        model = MyModel

    def create(self, validated_data):
        instance = MyModel(**validated_data)
        instance.do_something()
        instance.save()
        return instance
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...