python 33 lines · 2 tabs

Django REST Framework nested routers

Priya Sharma Jan 2026
2 tabs
from rest_framework import routers
from rest_framework_nested import routers as nested_routers
from . import views

router = routers.DefaultRouter()
router.register(r'posts', views.PostViewSet, basename='post')

# Nested router for comments under posts
posts_router = nested_routers.NestedDefaultRouter(router, r'posts', lookup='post')
posts_router.register(r'comments', views.CommentViewSet, basename='post-comments')

urlpatterns = router.urls + posts_router.urls
2 files · python Explain with highlit

Nested routers create hierarchical URL structures for related resources. I use drf-nested-routers to define parent-child relationships in URLs like /posts/1/comments/. This makes APIs more RESTful and intuitive. I filter child resources by parent ID in viewsets. For deep nesting, I limit to 2-3 levels for simplicity. Nested routes make relationships explicit in URLs. I use parent_lookup_kwargs to extract parent IDs. This pattern works well for one-to-many and many-to-many relationships.


Related snips

Share this code

Here's the card — post it anywhere.

Django REST Framework nested routers — share card
Link copied