Django-mptt模型使用Django REST框架进行序列化

Jay*_*odi 3 python django django-mptt django-rest-framework

我使用django-mptt存储类别层次结构,我需要以下面的格式序列化所有类别数据.

{
            "id": 1,
            "name": "FOOD"
            "children": [
                {
                    "id": 6,
                    "name": "PIZZA"
                },
                {
                    "id": 7,
                    "name": "BURGER"
                }
            ],

        },
        {
            "id": 2,
            "name": "ALCOHOL"
            "children": [
                {
                    "id": 8,
                    "name": "WINE"
                },
                {
                    "id": 9,
                    "name": "VODKA"
                }
            ],

        },
}
Run Code Online (Sandbox Code Playgroud)

我正在使用django REST框架ModelViewset和序列化程序.怎么办?

Wan*_*der 8

这反应了一年为时已晚,但对于其他人的利益,使用RecursiveFielddjangorestframework递归包.

我能够这样做:

class MyModelRecursiveSerializer(serializers.Serializer):
    # your other fields
    children = serializers.ListField(read_only=True, source='your_get_children_method', child=RecursiveField()) 
Run Code Online (Sandbox Code Playgroud)

请注意,这可能很昂贵,因此您可能只希望将其用于其条目不经常更改并缓存结果的模型.