Handle multiple serializers for the same view in Django Rest Framework.
Project description
drf-multi-serializers
Handle multiple serializers for the same view in Django Rest Framework.
This package uses uv for project management. To get started, ensure that uv is installed on your machine and updated to the 0.5.6 version. Detailed installation instructions for uv can be found here.
Installation
uv add drf-multi-serializers
Usage
Simply import the MultiSerializerMixin and use it in your API views:
from rest_framework.generics import ListCreateAPIView
from rest_framework.viewsets import ModelViewSet
from drf_multi_serializers import MultiSerializerMixin
...
class MyListCreateAPIView(MultiSerializerMixin, ListCreateAPIView):
...
serializer_classes = {
"create": MyCreateSerializer,
"list": MyListSerializer,
}
...
class MyViewSet(MultiSerializerMixin, ModelViewSet):
...
serializer_classes = {
"create": MyCreateSerializer,
"list": MyListSerializer,
"metadata": MyMetadataSerializer, # create ViewSets require either serializer_class or metadata serializer for OPTION requests
"partial_update": MyUpdateSerializer,
"retrieve": MyRetrieveSerializer,
"update": MyUpdateSerializer,
}
...
drf-multi-serializers also supports Django Rest Framework's versioning system!
from rest_framework.generics import ListCreateAPIView
from rest_framework.viewsets import ModelViewSet
from drf_multi_serializers import MultiSerializerMixin
...
class MyAPIView(MultiSerializerMixin, APIView):
...
serializer_classes = {
"v1": MyV1Serializer,
"v2": MyV2Serializer,
}
...
class MyViewSet(MultiSerializerMixin, ModelViewSet):
...
serializer_classes = {
"create": {"v1": MyV1CreateSerializer, "v2": MyV2CreateSerializer},
"list": MyListSerializer,
"metadata": MyMetadataSerializer, # create ViewSets require either serializer_class or metadata serializer for OPTION requests
"partial_update": MyUpdateSerializer,
"retrieve": MyRetrieveSerializer,
"update": MyUpdateSerializer,
}
...
Development
uv sync --frozen --group=development
uv run --frozen pre-commit install --install-hooks
uv run --frozen pre-commit install --hook-type=commit-msg
Contributing
Contributions are welcome! To get started, please refer to our contribution guidelines.
Issues
If you encounter any problems while using this package, please open a new issue here.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file drf_multi_serializers-1.4.0.tar.gz.
File metadata
- Download URL: drf_multi_serializers-1.4.0.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.5.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
847d3e6d837398815d6c170c6afefccd7949683d59408bd367d2d4498fb29bed
|
|
| MD5 |
05a2c76a41745233ca33adbd0e8e9176
|
|
| BLAKE2b-256 |
83d3ada6d9ecd3992783287fd6b306dce929e993855b6a5e6deaead657856907
|
File details
Details for the file drf_multi_serializers-1.4.0-py3-none-any.whl.
File metadata
- Download URL: drf_multi_serializers-1.4.0-py3-none-any.whl
- Upload date:
- Size: 3.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.5.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4448c289a81c86c2a07f31384f4237714ae317fffc056dff490dc8f3a740455
|
|
| MD5 |
0606a5b3c5bea59c2cba8f22d4fc2a74
|
|
| BLAKE2b-256 |
fc173d6c3b4fe7db771b84f480bea77e7a647bc0b40a3eaf9d2f3775207516ae
|