No project description provided
Project description
DRF Nested Utils
This package provides a set of utils to help developers implement nested data handling for Django Rest Framework.
This package adds support for:
- Direct relation handling (
ForeignKey
) - Reverse relation handling (i.e. allows working with models that have current as
ForeignKey
) - Direct and reverse
ManyToMany
, with special flow for the m2m relationships with customthrough
models GenericRelation
with special mixins
It also provides mixins for handling Unique
and UniqueTogether
validators.
Mixins
Nested Serializer Mixins
BaseNestedMixin
Base mixin that contains the methods for retrieval of all related fields of the serializer model.
It also provides all the update_or_create
methods for each type of fields
(direct relation
, reverse relation
, many-to-many relation
and generic relation
).
CreateNestedMixin
Mixin that allows creation of the nested models on serializer create
call.
You can provide a list of fields that should be forbidden on create,
the list of fields should be placed into the forbidden_on_create
field on serializer Meta
class.
Mixin uses BaseNestedMixin
properties and update_and_create
methods to create nested fields.
UpdateNestedMixin
Mixin that allows modification of the nested models on serializer update
call.
Mixin uses BaseNestedMixin
properties and update_and_create
methods to update nested fields.
Validator Mixins
UniqueFieldMixin
Mixin that allows usage of the unique
fields with nested mixins.
This mixin moves the validation process from is_valid
to create/update
call.
This is done because the fields that should be used in the unique
validation may not be
set on the initial is_valid
call and are set just before the nested create/update
call.
UniqueTogetherMixin
Mixin that allows usage of the unique_together
fields with nested mixins.
This mixin moves the validation process from is_valid
to create/update
call.
This is done because the fields that should be used in the unique_together
validation may not be
set on the initial is_valid
call and are set just before the nested create/update
call.
Helper Mixins
NestableMixin
Mixin that allows to specify the name of the nested field by setting write_source
if the initial source
of the field is different
from the field name or the initial source
is not writable (a property, for example).
ThroughMixin
Mixin that allows to specify if through
model should be connected to current model after the through
model create/update
call.
GenericRelationMixin
Mixin that should be used on serializers that represent connected by GenericRelation
models.
Examples
You can see an example project in examples/
directory.
Notes
If you are using a Many-to-Many field with
source
property or you have athrough
model on your serializer, you should add aNestableMixin
to the target serializer and add awrite_source
field when you initialize that serializer.
In case of the
source
property you should add an actual model field that would allow you to properly connect your model with related ones.
In case of the
through
model you should have it set to therelated_name
of the connectedthrough
model
You can also use
ThroughMixin
and setconnect_to_model
to False if you want to have the ability to keep thethrough
model connection in case thethrough
model ForeignKey should be different from the current model.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for drf_nested-1.3.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe0211930679ea3d13547a4952fbd04c94b73fb81b3bed9c332c6a047b6ee38c |
|
MD5 | bc892a223a0ca6b29affd7fb8a8538fc |
|
BLAKE2b-256 | 3a1836433208414cf94a64387ecbb2ade3937e5523c5a1e0963ab74b8ec83886 |