class ModelSerializer(Serializer): (source)
Known subclasses: rest_framework.serializers.HyperlinkedModelSerializer
A `ModelSerializer` is just a regular `Serializer`, except that: * A set of default fields are automatically populated. * A set of default validators are automatically populated. * Default `.create()` and `.update()` implementations are provided. The process of automatically determining a set of serializer fields based on the model fields is reasonably complex, but you almost certainly don't need to dig into the implementation. If the `ModelSerializer` class *doesn't* generate the set of fields that you need you should either declare the extra/differing fields explicitly on the serializer class, or simply use a `Serializer` class.
Method | build |
Return a two tuple of (cls, kwargs) to build a serializer field with. |
Method | build |
Create nested fields for forward and reverse relationships. |
Method | build |
Create a read only field for model methods and properties. |
Method | build |
Create fields for forward and reverse relationships. |
Method | build |
Create regular model fields. |
Method | build |
Raise an error on any unknown fields. |
Method | build |
Create a field representing the object's own URL. |
Method | create |
We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just: |
Method | get |
Return the default list of field names that will be used if the `Meta.fields` option is not specified. |
Method | get |
Return a dictionary mapping field names to a dictionary of additional keyword arguments. |
Method | get |
Returns the list of all field names that should be created when instantiating this serializer class. This is based on the default set of fields, but also takes into account the `Meta.fields` or `Meta.exclude` options if they have been specified. |
Method | get |
Return the dict of field names -> field instances that should be used for `self.fields` when instantiating the serializer. |
Method | get |
Determine a default set of validators for the following constraints: |
Method | get |
Determine a default set of validators for any unique_together constraints. |
Method | get |
Return any additional field options that need to be included as a result of uniqueness constraints on the model. This is returned as a two-tuple of: |
Method | get |
Determine the set of validators to use when instantiating serializer. |
Method | include |
Include any 'extra_kwargs' that have been included for this field, possibly removing any incompatible existing keyword arguments. |
Method | update |
Undocumented |
Class Variable | serializer |
Undocumented |
Instance Variable | url |
Undocumented |
Method | _get |
Returns all the model fields that are being mapped to by fields on the serializer class. Returned as a dict of 'model field name' -> 'model field'. Used internally by `get_uniqueness_field_options`. |
Inherited from Serializer
:
Method | __getitem__ |
Undocumented |
Method | __iter__ |
Undocumented |
Method | __repr__ |
Fields are represented using their initial calling arguments. This allows us to create descriptive representations for serializer instances that show all the declared fields on the serializer. |
Method | get |
Return a value to use when the field is being returned as a primitive value, without any object instance. |
Method | get |
Given the *incoming* primitive data, return the value for this field that should be validated and transformed to a native value. |
Method | run |
We override the default `run_validation`, because the validation performed by validators and the `.validate()` method should be coerced into an error dictionary with a 'non_fields_error' key. |
Method | run |
Add read_only fields with defaults to value before running validators. |
Method | to |
Dict of native values <- Dict of primitive datatypes. |
Method | to |
Object instance -> Dict of primitive datatypes. |
Method | validate |
Undocumented |
Class Variable | default |
Undocumented |
Property | data |
Undocumented |
Property | errors |
Undocumented |
Property | fields |
A dictionary of {field_name: field_instance}. |
Method | _read |
Undocumented |
Property | _readable |
Undocumented |
Property | _writable |
Undocumented |
Inherited from BaseSerializer
(via Serializer
):
Class Method | many |
This method implements the creation of a `ListSerializer` parent class when `many=True` is used. You can customize it if you need to control which keyword arguments are passed to the parent, and which are passed to the child. |
Method | __class |
Undocumented |
Method | __init__ |
Undocumented |
Method | __new__ |
When a field is instantiated, we store the arguments that were used, so that we can present a helpful representation of the object. |
Method | is |
Undocumented |
Method | save |
Undocumented |
Instance Variable | initial |
Undocumented |
Instance Variable | instance |
Undocumented |
Instance Variable | partial |
Undocumented |
Property | validated |
Undocumented |
Instance Variable | _context |
Undocumented |
Instance Variable | _validated |
Undocumented |
Inherited from Field
(via Serializer
, BaseSerializer
):
Method | __deepcopy__ |
When cloning fields we instantiate using the arguments it was originally created with, rather than copying the complete state. |
Method | bind |
Initializes the field name and parent for the field instance. Called when a field is added to the parent serializer instance. |
Method | fail |
A helper method that simply raises a validation error. |
Method | get |
Given the *outgoing* object instance, return the primitive value that should be used for this field. |
Method | get |
Return the default value to use when validating data if no input is provided for this field. |
Method | validate |
Validate empty values, and either: |
Method | validators |
Undocumented |
Class Variable | default |
Undocumented |
Instance Variable | allow |
Undocumented |
Instance Variable | default |
Undocumented |
Instance Variable | default |
Undocumented |
Instance Variable | error |
Undocumented |
Instance Variable | field |
Undocumented |
Instance Variable | help |
Undocumented |
Instance Variable | initial |
Undocumented |
Instance Variable | label |
Undocumented |
Instance Variable | parent |
Undocumented |
Instance Variable | read |
Undocumented |
Instance Variable | required |
Undocumented |
Instance Variable | source |
Undocumented |
Instance Variable | source |
Undocumented |
Instance Variable | style |
Undocumented |
Instance Variable | write |
Undocumented |
Property | context |
Returns the context as passed to the root serializer on initialization. |
Property | root |
Returns the top-level serializer for this field. |
Property | validators |
Undocumented |
Instance Variable | _creation |
Undocumented |
Instance Variable | _validators |
Undocumented |
rest_framework.serializers.HyperlinkedModelSerializer
Create nested fields for forward and reverse relationships.
We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just: return ExampleModel.objects.create(**validated_data) If there are many to many fields present on the instance then they cannot be set until the model is instantiated, in which case the implementation is like so: example_relationship = validated_data.pop('example_relationship') instance = ExampleModel.objects.create(**validated_data) instance.example_relationship = example_relationship return instance The default implementation also does not handle nested relationships. If you want to support writable nested relationships you'll need to write an explicit `.create()` method.
rest_framework.serializers.HyperlinkedModelSerializer
Return the default list of field names that will be used if the `Meta.fields` option is not specified.
Returns the list of all field names that should be created when instantiating this serializer class. This is based on the default set of fields, but also takes into account the `Meta.fields` or `Meta.exclude` options if they have been specified.
Return the dict of field names -> field instances that should be used for `self.fields` when instantiating the serializer.
Determine a default set of validators for the following constraints: * unique_for_date * unique_for_month * unique_for_year
Return any additional field options that need to be included as a result of uniqueness constraints on the model. This is returned as a two-tuple of: ('dict of updated extra kwargs', 'mapping of hidden fields')
Include any 'extra_kwargs' that have been included for this field, possibly removing any incompatible existing keyword arguments.