Skip to main content

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

drf_multi_serializers-1.4.0.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

drf_multi_serializers-1.4.0-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file drf_multi_serializers-1.4.0.tar.gz.

File metadata

File hashes

Hashes for drf_multi_serializers-1.4.0.tar.gz
Algorithm Hash digest
SHA256 847d3e6d837398815d6c170c6afefccd7949683d59408bd367d2d4498fb29bed
MD5 05a2c76a41745233ca33adbd0e8e9176
BLAKE2b-256 83d3ada6d9ecd3992783287fd6b306dce929e993855b6a5e6deaead657856907

See more details on using hashes here.

File details

Details for the file drf_multi_serializers-1.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for drf_multi_serializers-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e4448c289a81c86c2a07f31384f4237714ae317fffc056dff490dc8f3a740455
MD5 0606a5b3c5bea59c2cba8f22d4fc2a74
BLAKE2b-256 fc173d6c3b4fe7db771b84f480bea77e7a647bc0b40a3eaf9d2f3775207516ae

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page