Skip to main content

DRF Nested

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.3.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: drf_nested-1.3.3.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.10.11 Darwin/24.4.0

File hashes

Hashes for drf_nested-1.3.3.tar.gz
Algorithm Hash digest
SHA256 1a44018b30ccc03ad741a115e0e7ba92efc4f52af836fcbccc5cdb333a22a261
MD5 44056ca9f3ad1071a920fd954ac8df8b
BLAKE2b-256 466f950da9b03a6f904b0e25f95c4194d2749d55dc2565ef71d41042bd417359

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for drf_nested-1.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8f29577c2780aee594886d6ff805b4e42cb0b6b75cd1553ec778fa22ff82d905
MD5 ab6a10617282789076772195f8cb3473
BLAKE2b-256 b11a03f9db880c4ca1b63bb03b5d2bfbdb0043b86015e2a1436a4581f50d257d

See more details on using hashes here.

Supported by

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