first
This commit is contained in:
commit
89a5d70512
284 files changed
+8364
No files matched your search
@@ -0,0 +1,2 @@
|
||||
from .inline_serializer import inline_serializer
|
||||
from .inline_model_serializer import inline_model_serializer
|
||||
@@ -0,0 +1,20 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
def create_model_serializer_class(name, meta_fields, fields=None):
|
||||
if fields:
|
||||
meta = type('Meta', (), {'fields': meta_fields} if meta_fields else {})
|
||||
return type(name, (serializers.ModelSerializer,), {'Meta': meta, **fields})
|
||||
else:
|
||||
meta = type('Meta', (), {'fields': meta_fields} if meta_fields else {})
|
||||
return type(name, (serializers.ModelSerializer,), {'Meta': meta})
|
||||
|
||||
|
||||
def inline_model_serializer(*, meta_fields, fields=None, data=None, **kwargs):
|
||||
|
||||
serializer_class = create_model_serializer_class(name="inline_model_serializer", fields=fields, meta_fields=meta_fields)
|
||||
|
||||
if data is not None:
|
||||
return serializer_class(data=data, **kwargs)
|
||||
|
||||
return serializer_class(**kwargs)
|
||||
@@ -0,0 +1,18 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
def create_serializer_class(name, fields):
|
||||
return type(name, (serializers.Serializer,), fields)
|
||||
|
||||
|
||||
def inline_serializer(*, fields, data=None, **kwargs):
|
||||
# Important note if you are using `drf-spectacular`
|
||||
# Please refer to the following issue:
|
||||
# https://github.com/HackSoftware/Django-Styleguide/issues/105#issuecomment-1669468898
|
||||
# Since you might need to use unique names (uuids) for each inline serializer
|
||||
serializer_class = create_serializer_class(name="inline_serializer", fields=fields)
|
||||
|
||||
if data is not None:
|
||||
return serializer_class(data=data, **kwargs)
|
||||
|
||||
return serializer_class(**kwargs)
|
||||
Reference in new issue
Block a user