build-status-image pypi-version


Recursive Serialization for Django REST framework

This package provides a RecursiveField that enables you to serialize a tree, linked list, or even a directed acyclic graph. Also supports validation, deserialization, ModelSerializers, and multi-step recursive structures.


from rest_framework import serializers
from rest_framework_recursive.fields import RecursiveField

class TreeSerializer(serializers.Serializer):
    name = serializers.CharField()
    children = serializers.ListField(child=RecursiveField())

see here for more usage examples


  • Python (Tested on 2.7, 3.4, 3.6)
  • Django (Tested on 1.8, 1.9, 2.0)
  • Django REST Framework (Tested on 3.3, 3.7)


Install using pip

$ pip install djangorestframework-recursive

Release notes


  • This is the first release to include release notes.
  • Use inspect.signature when available. This avoids emitting deprecation warnings on Python 3.
  • Updated CI versions. djangorestframework-recursive is now tested against DRF 3.3-3.6, Python 2.7 and 3.6 and Django 1.8-1.11.


Install testing requirements.

$ pip install -r requirements.txt

Run with runtests.

$ ./

You can also use the excellent tox testing tool to run the tests against all supported versions of Python and Django. Install tox globally, and then simply run:

$ tox