"Django JSON Field derivative which allows to specify Pydantic schema"
Project description
Django + Pydantic = 🖤
Django JSONField with Pydantic models as a Schema
Usage
import pydantic
from django.db import models
from django_pydantic_field import PydanticSchemaField
class Foo(pydantic.BaseModel):
count: int
size: float = 1.0
class Bar(pydantic.BaseModel):
slug: str = "foo_bar"
class MyModel(models.Model):
foo_field = PydanticSchemaField(schema=Foo)
bar_list = PydanticSchemaField(schema=list[Bar])
...
model = MyModel(foo_field={"count": "5"}, bar_list=[{}])
model.save()
assert model.foo_field == Foo(count=5, size=1.0)
assert model.bar_list == [Bar(slug="foo_bar")]
Django REST Framework support
from rest_framework import serializers
from django_pydantic_field.rest_framework import PydanticSchemaField
class MyModelSerializer(serializers.ModelSerializer):
foo_field = PydanticSchemaField(schema=Foo)
class Meta:
model = MyModel
fields = '__all__'
Global approach with typed parser
and renderer
classes
from rest_framework.decorators import api_view, parser_classes, renderer_classes
from django_pydantic_field.rest_framework import PydanticSchemaRenderer, PydanticSchemaParser
@api_view(["POST"])
@parser_classes([PydanticSchemaParser[Foo]]):
@renderer_classes([PydanticSchemaRenderer[list[Foo]]])
def foo_view(request):
assert isinstance(request.data, Foo)
count = request.data.count + 1
return Response([Foo(count=count)])
Acknowledgement
- Churkin Oleg for his Gist as a source of inspiration;
- Boutique Air Flight Operations platform as a test ground;
Project details
Release history Release notifications | RSS feed
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
Close
Hashes for django-pydantic-field-0.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f43ee407e0b2b750cc6029664bd95b32bc79e3939e7625031bd38ba2374be2a |
|
MD5 | 6758b1d5e604a74c52fe2b85f8994aea |
|
BLAKE2b-256 | 8a7c20d1a40f6d93c2e3e2e837b53f8cc5d57a00ec6875642be05811ffe30ee6 |
Close
Hashes for django_pydantic_field-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fba813b92879f11ecb056e8ad374edd3206daca3736b3d858d322b2c9af982af |
|
MD5 | 702e2c8f6c7ed9e43ab739aedaff4f38 |
|
BLAKE2b-256 | 74ca22a498a893298fed83877c9928b1d184e4a3e7a26fd2b96350cae139dcb2 |