Django Rest Framework - drf-spectacular为模式添加额外的模型

yshpjwxd  于 2023-10-21  发布在  Go
关注(0)|答案(1)|浏览(164)

我使用了drf-spectacular,关于这个模块有两个问题。
1.我想创建自定义架构并覆盖API端点中的架构。如何做到这一点?

1.我寻找一种方法来添加自定义模型到模式,但没有连接到端点。我看到我可以通过以下方式添加自定义Schema:
““”

inline_serializer(
               name='PasscodeResponse',
               fields={
                   'passcode': serializers.CharField(),
               }
           ),

但不知道把这个放哪。
我想在这个Schemas中看到这个,就像屏幕上一样:

ncgqoxb0

ncgqoxb01#

使用通用视图自动实现:

from rest_framework.generics import GenericAPIView

我的观点的例子:

class CategoryDetails(GenericAPIView):
    serializer_class = CategorySerializer
    permission_classes = [IsAdminUser]
    http_method_names = ['get', 'put']

    def get_object(self, pk):
        try:
            return Category.objects.get(pk=pk)
        except Category.DoesNotExist:
            return None

    def get(self, request, pk):
        category = self.get_object(pk)
        if category:
            serializer = CategorySerializer(category)
            return Response(serializer.data)
        else:
            return Response({}, status=status.HTTP_200_OK)

GenericAPIView将同时生成schemaexample value
或者,如果你使用APIView类,你可以通过将这个函数添加到你的APIView类来实现这一点:get_serializer .如果你在browse able page中编辑它或者在add部分添加这个蓝图,这个函数将生成你的示例的蓝图。

例如:

def get_serializer(self, instance=None):
    """this method generate a JSON blueprint of object in Raw data > content (the text area)"""
    if instance:
        serializer_class = self.serializer_class
        return serializer_class(instance)
    return CategorySerializer()

不要忘记将serializer_class类属性添加到APIView。

相关问题