首页 > 解决方案 > DRF - 如何在 CreateAPIView 中获取创建的对象

问题描述

我的目标非常类似于在这个问题中提出的问题,但从 DRF 的角度来看,而不是从表格的角度来看。

所以基本上问题是,我怎样才能在下面的代码片段中获得新创建的对象:

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

标签: django-rest-frameworkdjango-generic-views

解决方案


您可以覆盖perform_create并使用serializer.save来获取创建的对象,例如:

class TestView(generics.CreateAPIView):
    serializer_class = TestSerializer

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

推荐阅读