def generate_serializer(self, field_schema, name, model=None,
onmodel=False, model_serializers=None,
extra_serializers=None):
"""
Generate a `Serializer` class to serve the given `field_schema`.
There are two scenarios:
* If `field_schema` only consists of model fields and `onmodel` flag
is specified as True, then a `ModelSerializer` class is generated.
* If `field_schema` consists of non-model fields or a mixture of
model fields and non-model fields, then a `ContainerSerializer` class
is created.
"""
model_fields, extra_fields, sources = self._classify_fields(
field_schema)
if onmodel:
assert model, ('You cannot create a model serializer without'
' specifying its model')
serializer = generate_model_serializer(
name, model, model_fields, bases=model_serializers)
else:
serializer = generate_container_serializer(
model_fields, extra_fields, name, model,
instance_sources=sources,
model_serializers=model_serializers,
extra_serializers=extra_serializers)
return serializer
评论列表
文章目录