Skip to main content

No project description provided

Project description

DRF Nested Utils

pypi package

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 custom through 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 a through model on your serializer, you should add a NestableMixin to the target serializer and add a write_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 the related_name of the connected through model

You can also use ThroughMixin and set connect_to_model to False if you want to have the ability to keep the through model connection in case the through model ForeignKey should be different from the current model.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

drf_nested-1.3.1.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

drf_nested-1.3.1-py3-none-any.whl (15.8 kB view details)

Uploaded Python 3

File details

Details for the file drf_nested-1.3.1.tar.gz.

File metadata

  • Download URL: drf_nested-1.3.1.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.11 Darwin/23.5.0

File hashes

Hashes for drf_nested-1.3.1.tar.gz
Algorithm Hash digest
SHA256 50cda4e6be62ce10c77e1c54d3c2403030fab2da41451987fdc52cee49aab059
MD5 5a25515a5920dca64713da8bf4186c6e
BLAKE2b-256 c8295becc3b03637108475a51c754a969548aa37f6858732b7fa081f51b654c6

See more details on using hashes here.

File details

Details for the file drf_nested-1.3.1-py3-none-any.whl.

File metadata

  • Download URL: drf_nested-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 15.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.11 Darwin/23.5.0

File hashes

Hashes for drf_nested-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fe0211930679ea3d13547a4952fbd04c94b73fb81b3bed9c332c6a047b6ee38c
MD5 bc892a223a0ca6b29affd7fb8a8538fc
BLAKE2b-256 3a1836433208414cf94a64387ecbb2ade3937e5523c5a1e0963ab74b8ec83886

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page