Skip to content

Commit

Permalink
Categorise DRF Serializer concepts
Browse files Browse the repository at this point in the history
Based on the Serializers API documentation:
http://www.django-rest-framework.org/api-guide/serializers/
  • Loading branch information
LilyFoote committed Apr 16, 2016
1 parent 6958f8d commit 92c4668
Showing 1 changed file with 76 additions and 0 deletions.
76 changes: 76 additions & 0 deletions concept-mapping.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,38 @@

* `formset_factory` function

## Serializers

* `field = Field()`
* `nested = Serializer()`
* `Serializer(partial=True)`
* `Serializer(many=True)`
* `Serializer(context=context)`
* `ModelSerializer`
* `Meta.model`
* `Meta.fields`
* `Meta.exclude`
* `Meta.depth` - automatic serializer nesting
* `Meta.read_only_fields`
* `Meta.extra_kwargs`
* `repr(serializer)`
* `Meta` inheritance
* `serializer_field_mapping` attribute
* `serializer_related_field` attribute
* `serializer_url_field` attribute
* `serializer_choice_field` attribute
* `build_standard_field` method
* `build_relational_field` method
* `build_nested_field` method
* `build_property_field` method
* `build_url_field` method
* `build_unknown_field` method
* `HyperlinkedModelSerializer`
* `ListSerializer` - autogenerated by `many=True`
* `Serializer.Meta.list_serializer_class`
* `Serializer.many_init` classmethod
* `__init__` for dynamic serializer modification

# Existing data input
## Forms
### Unbound form
Expand All @@ -48,6 +80,13 @@
* `queryset` parameter to `ModelChoiceField`
* `queryset` parameter to `ModelMultipleChoiceField`

## Serializers

* `Serializer(instance)`
* `serializer.instance`
* `CurrentUserDefault`
* `to_representation` method

# New data input
## Forms
### Bound form
Expand All @@ -65,6 +104,13 @@
* `MultiWidget.decompress` method
* `Widget.value_from_datadict` method

## Serializers

* `rest_framework.parsers`
* `JSONParser().parse(stream)`
* `Serializer(data=data)`
* `serializer.initial_data`

# Validation / data processing
## Forms
### Bound form
Expand Down Expand Up @@ -143,6 +189,21 @@
* `validators` parameter to `Field`
* `form.add_error`

## Serializers

* `serializer.is_valid()`
* `serializer.is_valid(raise_exception=True)` raises `ValidationError` if validation fails
* `serializer.validated_data`
* `serializer.errors`
* `validate_<fieldname>` methods on `Serializer` subclasses
* `Serializer.validate` method
* `SerializerField(validators=validators)`
* These are not expected to return a value, so cannot be used for data processing
* `Serializer.Meta.validators`
* `UniqueTogetherValidator(queryset=queryset, fields=fields)`
* `required` parameter to `Field` and `Serializer`
* `to_internal_value` method

# Rendering
## Forms

Expand Down Expand Up @@ -232,6 +293,11 @@

* `formset_factory` function

## Serializers

* `rest_framework.renderers`
* `JSONRenderer().render(serializer.data)`

# Data output
## Forms
### Bound form
Expand All @@ -246,3 +312,13 @@
* `path` parameter to `FilePathField`
* `recursive` parameter to `FilePathField`
* `match` parameter to `FilePathField`

## Serializers

* `Serializer.create` method
* `Serializer.update` method
* `Serializer.save` method
* default `save` accepts `**kwargs`: `serializer.save(owner=request.user)`
* `ListSerializer`
* `create` method
* `update` method

1 comment on commit 92c4668

@auvipy
Copy link

@auvipy auvipy commented on 92c4668 Nov 13, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are you going to open a PR for this?

Please sign in to comment.