Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. # SerializerMethodField {{tag>Serializer Method Field django with recursive}} <code py> class MenuUserActionSerializer(serializers.ModelSerializer): brand = BrandSerializer(source="menu.brand") menu = MenuSerializer(read_only=True) menu_list = serializers.SerializerMethodField() @classmethod def get_menu_list(cls, obj): menu_qs = Menu.objects.raw( f""" WITh RECURSIVE menu_parent(id, parent_id, name, level, path, cycle) as ( SELECT id, parent_id, name, level, array[id], false FROM brand_menu WHERE id = {obj.menu.id} UNION ALL SELECT p.id, p.parent_id, p.name, p.level, array_append(c.path, p.id), p.id = any(c.path) FROM brand_menu p, menu_parent c WHERE p.id = c.parent_id AND not cycle ) SELECT * from menu_parent order by level """ ) menu_list_se = MenuSerializer(menu_qs, many=True) return menu_list_se.data class Meta: model = MenuUserAction fields = "__all__" </code> open/django-serializermethodfield.txt Last modified: 2024/10/05 06:15by 127.0.0.1