在djanago rest框架中创建假模型,但不迁移它以用于swagger

r1zk6ea1  于 2022-11-06  发布在  Go
关注(0)|答案(1)|浏览(94)

我尝试在Django Rest Framework中使用drf-spectacular来实现swagger UI。我还没有安装任何数据库,在这个阶段我不想实现或创建任何数据库或表。我只想创建一个具有不同端点的API契约,并在swagger UI中显示所需和响应的数据类型。
我的问题是,我如何创建一个模型(假模型)而不实现它,也不迁移它?

juud5qan

juud5qan1#

你可以创建一个序列化器,并在那里实现所有必需的字段。如果你需要不同的序列化器来处理请求和响应,只需在swagger_auto_schema decorator中传递它们。对请求一使用request_body参数,对响应使用responses参数。下面是一个例子:

class MyRequestSerializer(serializers.Serializer):
    first_name = serializers.Charfield(max_length=128)
    last_name = serializers.Charfield(max_length=128, allow_blank=True)

class MyResponseSerializer(serializer.Serializer):
    my_custom_response_field = serializers.IntegerField()

class MyAPIView(APIView):
    @swagger_auto_schema(request_body=MyRequestSerializer(), responses={200: MyResponseSerializer()})
    def get(self, request, format=None):
         request_data = MyRequestSerializer(request.data)
         do_smth
         response_serializer = MyResponseSerializer(request_data)
         return Response(response_serializer.data)

相关问题