Graphene Django Extensions🔗
Documentation: https://mrthearman.github.io/graphene-django-extensions/
Source Code: https://github.com/MrThearMan/graphene-django-extensions/
Contributing: https://github.com/MrThearMan/graphene-django-extensions/blob/main/CONTRIBUTING.md
Extensions for writing GraphQL schemas with the graphene-django library with less boilerplate.
The main features are:
-
A new ObjectType
DjangoNode, which:- adds convenience methods for managing permissions for both the ObjectType and individual fields.
- adds a hook for adding filtering to both single items and lists returned by the ObjectType.
- adds convenience methods for creating Fields, ListFields, Nodes, and Connections for the ObjectType.
- adds filterset filters automatically to ListFields created for the ObjectType.
- automatically optimizes queries using graphene-django-query-optimizer.
-
A new MutationType
DjangoMutation, which:- adds convenience methods for managing permissions.
- adds
create,updateoperation with serializers anddeleteoperations with optional validation hook. - adds an option for custom model operations.
- makes updates fully partial by default.
- adds better error handling.
-
A new ModelSerializer
NestingModelSerializer, which:- adds pre and post save handlers for creating or updating related entities from nested serializer fields, all within a single transaction to ensure atomicity.
- adds better handling of constraint integrity errors by finding
violation_error_messagefrom the constraint. - adds
get_or_defaultmethod for finding default values for field validation.
-
A new FilterSet
ModelFilterSet, which:- changes the default filters for related fields to the custom
IntChoiceFilterandIntMultipleChoiceFilterfilters, which don't make database queries to check if the given primary keys for the filters actually correspond to existing rows for the database model. - adds a custom ordering filter automatically to all subclasses, with the default
pkfilter. - allows adding new ordering filters with the
Meta.order_byattribute. order_byfields are converted to enums for better autocompletion in GraphiQL.- allows combining multiple method filters with the
Meta.combination_methodsattribute.
- changes the default filters for related fields to the custom