Проблема с документацией 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. Любая помощь или предложения будут высоко оценены.