Как исключить параметр пути id в swagger-ui в DRF-YASG для DRF и DJANGO - PullRequest
0 голосов
/ 23 марта 2019

Я использую DRF-YASG для документирования API в Swagger и хочу настроить / исключить некоторые поля, показанные в параметрах

Я запускаю проект с Django 2.1.7, DRF 3.9.2 и DRF-ЯСГ 1.14.0.

Итак, я хочу исключить идентификатор, который отображается в swagger-ui (например, 'string' и 'path'), потому что он у меня есть в запросе тела через Schema, но swagger-ui показываетid (автоматически сгенерированное поле) в параметрах.

На приведенном ниже экране вы можете увидеть проблему:

https://user -images.githubusercontent.com / 5421182 / 54859641-70359d00-4cee-11e9-9b12-79ab57d12495.png

Здесь мой код ...

request_category_put = openapi.Schema(type=openapi.TYPE_OBJECT, required=['id','name'],
    properties={
        'id': openapi.Schema(type=openapi.TYPE_INTEGER, 
                title='Id', readOnly=True,
                description='Id of the category'), ### <-- I have the ID here.
        'name': openapi.Schema(type=openapi.TYPE_STRING, 
                title='Category', maxLength=200, minLength=1,
                description='Name of the category')
    },
    example={
        'id' : 1,
        'name' : 'Business',
    }
)

class CategoryDetail(APIView):
    permission_classes = (IsAuthenticatedOrReadOnly,)

    @swagger_auto_schema(
        manual_parameters=[authorization],
        request_body=request_category_put,
        responses = {
            '200' : response_category,
            '400': 'Bad Request',
            '404': 'Not found'
        },        
        security=[security_endpoint],
        operation_id='Update category',
        operation_description='Update a specific category.',
    )
    def put(self, request, pk, format=None):
        category = get_object_or_404(Category, pk=pk)
        serializer = CategorySerializer(category, data=request.data)
        if serializer.is_valid():
            serializer.save(modified_by=self.request.user)
            return Response(serializer.data, status=status.HTTP_200_OK)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Когда я добавляю поле в manual_parameters в @swagger_auto_schema, меняются только атрибуты этого ... нополе все еще там.

...