darkhorse
darkhorse

Reputation: 8722

How to call a model's method before saving a serializer in Django Rest Framework?

I have a model where I am trying to create an object using DRF. The model class has a method which I would like to call before saving the serializer. Something like this:

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

The serializer code:

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

Hopefully, you guys get the idea.

Upvotes: 1

Views: 1752

Answers (1)

Alex
Alex

Reputation: 2474

Afaik DRF doesn't support things such as save(commit=False) but, alternatively, you can override MyModelSerializer.create method:

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

    def create(self, validated_data):
        instance = MyModel(**validated_data)
        instance.do_something()
        instance.save()
        return instance

Upvotes: 5

Related Questions