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 customthroughmodels GenericRelationwith 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
sourceproperty or you have athroughmodel on your serializer, you should add aNestableMixinto the target serializer and add awrite_sourcefield when you initialize that serializer.
In case of the
sourceproperty you should add an actual model field that would allow you to properly connect your model with related ones.
In case of the
throughmodel you should have it set to therelated_nameof the connectedthroughmodel
You can also use
ThroughMixinand setconnect_to_modelto False if you want to have the ability to keep thethroughmodel connection in case thethroughmodel ForeignKey should be different from the current model.
Metadata
Release files for drf-nested 1.3.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| drf_nested-1.3.4.tar.gz | 38.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| drf_nested-1.3.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 54.0 kB
Release files / drf_nested-1.3.4.tar.gz
| Download URL | drf_nested-1.3.4.tar.gz |
|---|---|
| Size | 38.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0de49028c38b3cd565873314be58c0b2e5c09042d0641e146a1700cc110bd832
|
|
BLAKE2b-256 checksum How to use checksums |
9868f8946b272ef2b0fc13f2ddc5f0ee0f064798155ee574b47464c22ee9479a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / drf_nested-1.3.4-py3-none-any.whl
| Download URL | drf_nested-1.3.4-py3-none-any.whl |
|---|---|
| Size | 16.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3e9390fa6eee483e4678e26809c14cba1be71301c16dea925603d0b2ee080873
|
|
BLAKE2b-256 checksum How to use checksums |
12bd45bd60027b1d550bea2bf1f550dc230cf1247a4bb0922ba02ad12d4cbfe3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for drf-nested 1.3.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.