In DRF, you can use a serializer as a field in another serializer. However, recursion is not possible.
Tom Christie posted a solution on another issue ( Django rest framework nested self-referencing objects ). Its solution will also work with your problem.
In your UOMCategorySerializer.Meta class, you specify the fields you want to use, also specify the parent and / or child fields. Then you use Tom Christie's solution.
In your case, this will give:
class UOMCategorySerializer(ModelSerializer): class Meta: model = UOMCategory fields = ('name', 'description', 'parent', 'children')
Tom Christies solution: By specifying which field to use for parents and / or children, you avoid using too large (and possibly infinite) recursion:
UOMCategorySerializer.base_fields['parent'] = UOMCategorySerializer() UOMCategorySerializer.base_fields['children'] = UOMCategorySerializer(many=True)
The above works for me in a similar situation.
jjkester
source share