Quickstart
This guide will help you get started with Shapeless Serializers quickly.
Basic Setup
Create your shapeless serializer:
from shapeless_serializers.serializers import ShapelessModelSerializer
from myapp.models import Book
class BookSerializer(ShapelessModelSerializer):
class Meta:
model = Book
fields = '__all__'
Use dynamic configuration in your view:
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['GET'])
def book_detail(request, pk):
book = Book.objects.get(pk=pk)
serializer = BookSerializer(
book,
fields=['id', 'title', 'author', 'publication_date'],
rename_fields={'id': 'book_id'}
)
return Response(serializer.data)
Common Patterns
Basic Field Selection
serializer = BookSerializer(
instance,
fields=['title', 'author', 'price']
)
Field Renaming
serializer = BookSerializer(
instance,
rename_fields={
'price': 'retail_price',
'id': 'book_identifier'
}
)
Simple Nesting
serializer = BookSerializer(
instance,
nested={
'author': {
'serializer': AuthorSerializer,
'fields': ['name', 'bio']
}
}
)
Conditional Fields
serializer = BookSerializer(
instance,
conditional_fields={
'internal_code': lambda instance, ctx: ctx['request'].user.is_staff
}
)
Next Steps
After this quickstart, explore:
Dynamic Fields for advanced field selection
Nested Serializers for complex relationships
Creating Custom Shapeless Serializers for building your own mixins