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

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

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

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

  1. inline_serializer(
  2. name='PasscodeResponse',
  3. fields={
  4. 'passcode': serializers.CharField(),
  5. }
  6. ),

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

ncgqoxb0

ncgqoxb01#

使用通用视图自动实现:

  1. from rest_framework.generics import GenericAPIView

我的观点的例子:

  1. class CategoryDetails(GenericAPIView):
  2. serializer_class = CategorySerializer
  3. permission_classes = [IsAdminUser]
  4. http_method_names = ['get', 'put']
  5. def get_object(self, pk):
  6. try:
  7. return Category.objects.get(pk=pk)
  8. except Category.DoesNotExist:
  9. return None
  10. def get(self, request, pk):
  11. category = self.get_object(pk)
  12. if category:
  13. serializer = CategorySerializer(category)
  14. return Response(serializer.data)
  15. else:
  16. return Response({}, status=status.HTTP_200_OK)

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

例如:

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

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

展开查看全部

相关问题