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)