drf-yasg icon indicating copy to clipboard operation
drf-yasg copied to clipboard

Circular references for swagger_serializer_method

Open vchepurko opened this issue 4 years ago • 1 comments

Is it a way to create circular references to generate open API schema using rest_framework.serializers?

To build tree structure Serializer needs to reference for self.

class ItemSerializer(Serializer):
    item = serializers.SerializerMethodField()

    class Meta:
        swagger_schema_fields = item_schema

    @swagger_serializer_method(serializer_or_field=ItemSerializer)
    def get_item(self, item):
        return ItemSerializer(item).data

    def to_representation(self, item):
        return {
            "items": [self.get_item(item) for item in item.items]
        }


class TreeSerializer(Serializer):
    item = serializers.SerializerMethodField()

    class Meta:
        swagger_schema_fields = tree_schema

    @swagger_serializer_method(serializer_or_field=ItemSerializer)
    def get_item(self, data):
        return ItemSerializer(data, markdown_to_html=self.markdown_to_html).data

    def to_representation(self, data):
        return {
            "items": [self.get_item(item) for item in data]
        }

It is incorrect code, is it exists how to correctly create tree structure for swagger?

vchepurko avatar Aug 20 '20 14:08 vchepurko

I have similar problem. Has anyone found a solution?

citos88 avatar Oct 13 '21 13:10 citos88