Проблема с документацией Swagger: Неверное определение поля для SerializerMethodField в REST-фреймворке Django

Описание проблемы

У меня возникла проблема с генерацией документации Swagger для проекта Django REST Framework. В частности, я использую SerializerMethodField с именем info в своем сериализаторе. Однако в генерируемой документации Swagger он неверно определяется как строка, в то время как info получен из связанной модели и не является строкой.

Пример

В документации Swagger, info неверно представлен как строка:

{
  "count": 0,
  "next": "http://example.com",
  "previous": "http://example.com",
  "results": [
    {
...
      "info": "string",
...
    }
  ]
}

Соответствующий код сериализатора

Вот фрагмент сериализатора, в котором возникает проблема:

class ProductSerializer(serializers.ModelSerializer):
...
    @staticmethod
    def get_info(obj):
        info = ProductInfo.objects.filter(product=obj.id)
        return ProductInfoSerializer(info, many=True).data
...

Я пробовал использовать swagger_serializer_method, но, похоже, это не дает никакого эффекта. Вот что я попытался сделать:

from drf_yasg.utils import swagger_serializer_method

class ProductSerializer(serializers.ModelSerializer):
...
    @staticmethod
    @swagger_serializer_method(serializer_or_field=ProductInfoSerializer().fields)
    def get_info(obj):
        info = ProductInfo.objects.filter(product=obj.id)
        return ProductInfoSerializer(info, many=True).data
...

Однако это не решило проблему. Проблема относится к нескольким полям, а не только к info.

Я ищу рекомендации о том, как правильно представлять info и другие подобные поля в документации Swagger. Любая помощь или предложения будут высоко оценены.

Вернуться на верх