Skip to main content

Use pydantic with the Django REST framework

Project description

CI/CD Status Test Coverage PyPI version

Use pydantic with Django REST framework

Introduction

Pydantic is a great Python library to perform data serialization and validation.

Django REST framework is a framework built on top of Django which allows writing REST APIs.

If like me you develop DRF APIs and you like pydantic , drf-pydantic is for you 😍.

Installation

pip install drf-pydantic

Usage

General

Use drf_pydantic.BaseModel instead of pydantic.BaseModel when creating your models:

from drf_pydantic import BaseModel

class MyModel(BaseModel):
  name: str
  addresses: list[str]

Whenever you need a DRF serializer you can get it from the model like this:

MyModel.drf_serializer

ℹ️ INFO
Models created using drf_pydantic are fully idenditcal to those created by pydantic and only the drf_serializer attribute is added on class creation.

Custom Base Models

You can also use it as a mixin with your existing pydantic models (no need to change your existing code 🥳):

from drf_pydantic import BaseModel as DRFBaseModel
from pydantic import BaseModel

class MyBaseModel(BaseModel):
  value: int

class MyModel(DRFBaseModel, MyBaseModel):
  name: str
  addresses: list[str]

⚠️ ATTENTION
Inheritance order is important: drf_pydantic.BaseModel must always go before the pydantic.BaseModel class.

Roadmap

  • Add ENUM support
  • Add option to create custom serializer for complex models

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-pydantic-0.2.0.tar.gz (5.7 kB view hashes)

Uploaded Source

Built Distribution

drf_pydantic-0.2.0-py3-none-any.whl (5.5 kB view hashes)

Uploaded Python 3

Supported by

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