diff --git a/categories/api/viewsets.py b/categories/api/viewsets.py index 40fcaa1..d17e24c 100644 --- a/categories/api/viewsets.py +++ b/categories/api/viewsets.py @@ -6,6 +6,8 @@ from ..models import Category class CategorySerializer(serializers.ModelSerializer): + children = serializers.SerializerMethodField(method_name="_get_children") + class Meta: model = Category fields = [ @@ -24,6 +26,10 @@ class CategorySerializer(serializers.ModelSerializer): "children", ] + def _get_children(self, obj): + children = obj.get_children() + return CategorySerializer(children, many=True).data + countable_fields = [ f @@ -50,12 +56,6 @@ for field in countable_fields: CategorySerializer.Meta.fields += [f"{field.name}_count_cumulative"] -CategorySerializer._declared_fields["children"] = CategorySerializer( - many=True, - source="get_children", -) - - class CategoryList(list): # To overcome problem with filters that require model in queryset model = Category