Edgar Navasardyan
Edgar Navasardyan

Reputation: 4511

DRF - How to get created object in CreateAPIView

My goal very much resembles to what has been asked in this question but from the perspective of DRF, rather than forms.

So basically the question is, how can I get the newly created object in the following code snippet:

TestSerializer(serializers.ModelSerializer)
    class Meta:
        fields = '__all__'
        model = TestModel


class TestView(generics.CreateAPIView):
    serializer_class = TestSerializer

    def create(self, request, *args, **kwargs):
        response = super(TestView, self).create(request, *args, **kwargs)
        created_model_instance = .... ?
        print(created_model_instance.id)
        return response

Upvotes: 6

Views: 1808

Answers (1)

Muhammad Hasan Alasady
Muhammad Hasan Alasady

Reputation: 130

You can override perform_create and use serializer.save to get the created object, like:

class TestView(generics.CreateAPIView):
    serializer_class = TestSerializer

    def perform_create(self, serializer):
        """Some doc here!"""
        obj = serializer.save()
        print(obj.id)

Upvotes: 2

Related Questions