https://github.com/strawberry-graphql/strawberry-django
Strawberry GraphQL Django extension
https://github.com/strawberry-graphql/strawberry-django
django graphql strawberry-graphql
Last synced: about 1 month ago
JSON representation
Strawberry GraphQL Django extension
- Host: GitHub
- URL: https://github.com/strawberry-graphql/strawberry-django
- Owner: strawberry-graphql
- License: mit
- Created: 2020-10-30T17:12:01.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2026-03-30T16:43:15.000Z (2 months ago)
- Last Synced: 2026-04-03T03:21:15.278Z (2 months ago)
- Topics: django, graphql, strawberry-graphql
- Language: Python
- Homepage: https://strawberry.rocks/docs/django
- Size: 2.57 MB
- Stars: 490
- Watchers: 14
- Forks: 149
- Open Issues: 93
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
- fucking-awesome-python - strawberry-django - Strawberry GraphQL integration with Django. (GraphQL)
- awesome-django - strawberry-django - Django integration with Strawberry, a GraphQL library designed for modern development (Third-Party Packages / APIs)
- awesome-python - strawberry-django - Strawberry GraphQL integration with Django. (GraphQL)
README
# Strawberry GraphQL Django Integration
[](https://github.com/strawberry-graphql/strawberry-django/actions/workflows/tests.yml?query=branch%3Amain)
[](https://codecov.io/gh/strawberry-graphql/strawberry-django/tree/main)
[](https://pypi.org/project/strawberry-graphql-django/)
[](https://pepy.tech/project/strawberry-graphql-django)

[**Documentation**](https://strawberry.rocks/docs/django) | [**Discord**](https://strawberry.rocks/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)),
]
```
That's it! You now have a fully functional GraphQL API with:
- Automatic type inference from Django models
- Optimized database queries (no N+1 problems)
- Interactive GraphiQL interface at `/graphql/`
Visit http://localhost:8000/graphql/ and try this query:
```graphql
query {
fruits {
id
name
color {
name
}
}
}
```
## Next Steps
Check out our comprehensive documentation:
- 📚 [**Getting Started Guide**](https://strawberry.rocks/docs/django) - Complete tutorial with examples
- 🎓 [**Example App**](./examples/ecommerce_app/) - Full-featured e-commerce application
- 📖 [**Documentation**](https://strawberry.rocks/docs/django) - In-depth guides and API reference
- 💬 [**Discord Community**](https://strawberry.rocks/discord) - Get help and share your projects
## Contributing
We welcome contributions! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated 😊
**Quick Start:**
```shell
git clone https://github.com/strawberry-graphql/strawberry-django
cd strawberry-django
pre-commit install
```
Then run tests with `make test` or `make test-dist` for parallel execution.
## Community
- 💬 [**Discord**](https://strawberry.rocks/discord) - Join our community for help and discussions
- 🐛 [**GitHub Issues**](https://github.com/strawberry-graphql/strawberry-django/issues) - Report bugs or request features
- 💡 [**GitHub Discussions**](https://github.com/strawberry-graphql/strawberry-django/discussions) - Ask questions and share ideas
## License
This project is licensed under the [MIT License](LICENSE).