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 --group=development
uv run pre-commit install --install-hooks
uv run 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.3.0.tar.gz (12.4 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.3.0-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for drf_multi_serializers-1.3.0.tar.gz
Algorithm Hash digest
SHA256 aed9791ad0a4d9f8251a810f1c4e518b5b917379e7de894c9f6c587cbacaad70
MD5 bf1f144d5c97ea2add1ce88ed88c518f
BLAKE2b-256 b447864a496a79d32600597e5f08c845291158f2643cf6859815319fac3b3b3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for drf_multi_serializers-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c4df40578fbe95f96ce8db20de50519a37aa130bed12ac9468a0771901f1fca6
MD5 05270394e4b86efc5b4bbca48fde42a3
BLAKE2b-256 68c95f6b815f35a6cd9af9615e4b5beb6ada0902e28b1c38d318884ee5f04f34

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