Serializer
Base serializer class for custom serialization logic.Class Signature
Object instance to serialize. If not provided, the serializer will be used for deserialization only.
Input data for deserialization. When provided, the serializer will validate and deserialize the data.
Allow partial updates. When
True, all fields are optional during validation.Additional context data passed to the serializer. Accessible via
self.context.Serialize a list of objects instead of a single object. Creates a
ListSerializer instance.Methods
is_valid()
Validate the input data.If
True, raises ValidationError when validation fails.True if data is valid, False otherwise.
save()
Persist the validated data into an object instance.Additional keyword arguments to merge with
validated_data.create() for new instances or update() for existing instances. Returns the saved object instance.
create()
Create and return a new object instance from validated data.Dictionary of validated data.
update()
Update and return an existing object instance from validated data.The existing object instance to update.
Dictionary of validated data.
validate()
Object-level validation. Override to add custom validation logic.Dictionary of field values.
ValidationError.
to_representation()
Convert object instance to primitive data types.The object instance to serialize.
to_internal_value()
Convert primitive data types to Python objects.Dictionary of primitive datatypes.
Properties
data
Returns the serialized representation. Must callis_valid() first if data was passed to the serializer.
errors
Returns validation errors. Only available after callingis_valid().
validated_data
Returns the validated data. Only available after callingis_valid().
initial_data
Returns the raw input data passed to the serializer.Example
ModelSerializer
Serializer class that automatically generates fields based on a Django model.Class Signature
Meta Options
The Django model class to serialize.
List of field names to include. Use
'__all__' for all model fields.List of field names to exclude. Cannot be used with
fields.List of field names to mark as read-only.
Dictionary mapping field names to dictionaries of additional keyword arguments.
Depth of nested relationships to automatically serialize (0-10).
Methods
create()
Create a model instance from validated data.update()
Update a model instance from validated data.Field Mapping
The following Django model fields are automatically mapped to serializer fields:| Model Field | Serializer Field |
|---|---|
AutoField | IntegerField |
BigAutoField | BigIntegerField |
BooleanField | BooleanField |
CharField | CharField |
DateField | DateField |
DateTimeField | DateTimeField |
DecimalField | DecimalField |
EmailField | EmailField |
FileField | FileField |
FloatField | FloatField |
ImageField | ImageField |
IntegerField | IntegerField |
SlugField | SlugField |
TextField | CharField |
URLField | URLField |
UUIDField | UUIDField |
ForeignKey | PrimaryKeyRelatedField |
ManyToManyField | PrimaryKeyRelatedField(many=True) |
Example
HyperlinkedModelSerializer
Model serializer that uses hyperlinks for relationships instead of primary keys.Class Signature
Differences from ModelSerializer
- Includes a
urlfield by default (instead ofid) - Uses
HyperlinkedRelatedFieldfor relationships - Requires
requestin serializer context
Example
ListSerializer
Serializer for validating and serializing multiple objects at once.Class Signature
The serializer instance for individual items.
Allow empty lists as valid input.
Maximum number of items in the list.
Minimum number of items in the list.
Methods
create()
Create multiple instances from validated data.child.create() for each item.
update()
Update multiple instances from validated data.Example
BaseSerializer
Minimal base class for custom serializers.Class Signature
Methods to Override
to_representation()
Serialize an object instance.to_internal_value()
Deserialize primitive data.create()
Create new instance..save() support on new objects.
update()
Update existing instance..save() support on existing objects.
