Skip to main content

DjraphQL builds a flexible & performant GraphQL schema by examining your Django models.

Project description

DjraphQL

Check out the documentation!

What

DjraphQL ("GiraffeQL") is a library that examines your Django models and builds a flexible, performant GraphQL schema using Graphene. No resolvers necessary.

You can of course extend this schema, reference the defined types and build custom business logic into your own resolvers. The goal is to remove the monotonous 90% of boilerplate generalized C.R.U.D. and allow you to focus on stuff that can't be auto-generated.

How

You provide a list of Django models and some associated metadata. For example, you can define the QuerySet that will be used for each fetch of a certain model type (you have access to the Django request object in the definition lambda for the QuerySet). By providing a QuerySet that is already filtered by e.g., user account, the library will use that QuerySet in the resolvers it generates. The requirement that you must remember to filter by account is all but eliminated.

It builds each relationship into the schema, so you can traverse from Label to Artists to Albums to Songs in a single query (both in the result-set and via filtering), still retreiving only the data you need.

You can specify arbitrarily complex SQL statements: the schema allows specifying filtering via where, orderBy, offset, limit clauses.

It allows smooth (nested, if you're bold enough!) updates & inserts.

Perhaps best of all, it automatically generates select_related and prefetch_related calls to your QuerySet. This avoids the classic GraphQL N+1 problem usually solved by things like dataloader. Additionally, it fetches only the columns necessary to satisfy the query. No over fetching!

A hand-rolled schema providing all of this for a single model would be hundreds of lines of code. Multiply that by a realistic, mature application with a hundred or more models, and you have an unmaintainable mess. This library auto-generates it for you, leaving the "fun" stuff for you.

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

djraphql-0.1.5.tar.gz (30.5 kB view details)

Uploaded Source

File details

Details for the file djraphql-0.1.5.tar.gz.

File metadata

  • Download URL: djraphql-0.1.5.tar.gz
  • Upload date:
  • Size: 30.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.6

File hashes

Hashes for djraphql-0.1.5.tar.gz
Algorithm Hash digest
SHA256 c3fa95c0198cdf21b81b85e53a039078c989033b49c1ee75644d0a969d2268f5
MD5 01e2c6a6ee70f425cbf90a8efd8c707f
BLAKE2b-256 45d10e770abbfe087ee7e7f035d14a6f7f4f5dca4747b6867e4f34bb3e497e61

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