21 lines
776 B
Python
21 lines
776 B
Python
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)
|