| single |
# Strawberry GraphQL Django Integration
[CI]
[Coverage]
[PyPI]
[Downloads]
![PyPI - Python Version]
[**Documentation**] | [**Discord**]
Strawberry GraphQL Django integration provides powerful tools to build
GraphQL APIs with Django. Automatically generate GraphQL types, queries,
mutations, and resolvers from your Django models with full type safety.
## Installation
```shell
pip install strawberry-graphql-django
```
## Features
- 🍓 **Automatic Type Generation** - Generate GraphQL types from Django
models with full type safety
- 🔍 **Advanced Filtering** - Powerful filtering system with lookups
(contains, exact, in, etc.)
- 📄 **Pagination** - Built-in offset and cursor-based (Relay) pagination
- 📊 **Ordering** - Sort results by any field with automatic ordering
support
- 🔐 **Authentication & Permissions** - Django auth integration with
flexible permission system
- ✨ **CRUD Mutations** - Auto-generated create, update, and delete
mutations with validation
- ⚡ **Query Optimizer** - Automatic `select_related` and
`prefetch_related` to prevent N+1 queries
- 🐍 **Django Integration** - Works with Django views (sync and async),
forms, and validation
- 🐛 **Debug Toolbar** - GraphiQL integration with Django Debug Toolbar
for query inspection
## Quick Start
```python
# models.py
from django.db import models
class Fruit(models.Model):
name = models.CharField(max_length=20)
color = models.ForeignKey("Color", on_delete=models.CASCADE,
related_name="fruits")
class Color(models.Model):
name = models.CharField(max_length=20)
`
`python
# types.py
import strawberry_django
from strawberry import auto
from . import models
@strawberry_django.type(models.Fruit)
class Fruit:
id: auto
name: auto
color: "Color"
@strawberry_django.type(models.Color)
class Color:
id: auto
name: auto
fruits: list[Fruit]
`
`python
# schema.py
import strawberry
import strawberry_django
from strawberry_django.optimizer import DjangoOptimizerExtension
from .types import Fruit
@strawberry.type
class Query:
fruits: list[Fruit] = strawberry_django.field()
schema = strawberry.Schema(
query=Query,
extensions=[DjangoOptimizerExtension],
)
`
`python
# urls.py
from django.urls import path
from strawberry.django.views import AsyncGraphQLView
from .schema import schema
urlpatterns = [
path("graphql/", AsyncGraphQLView.as_view(schema=schema)),
]
|