All Projects → strawberry-graphql → strawberry-graphql-django

strawberry-graphql / strawberry-graphql-django

Licence: MIT license
Strawberry GraphQL Django extension

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to strawberry-graphql-django

strawberry.rocks
Website for Strawberry GraphQL
Stars: ✭ 23 (-88.32%)
Mutual labels:  strawberry-graphql
FastAPI-template
Feature rich robust FastAPI template.
Stars: ✭ 660 (+235.03%)
Mutual labels:  strawberry-graphql
strawberry-django-plus
Enhanced Strawberry GraphQL integration with Django
Stars: ✭ 164 (-16.75%)
Mutual labels:  strawberry-graphql
lupyne
Pythonic search engine based on PyLucene.
Stars: ✭ 61 (-69.04%)
Mutual labels:  strawberry-graphql

Strawberry GraphQL Django integration

CI PyPI Downloads

This package provides powerful tools to generate GraphQL types, queries, mutations and resolvers from Django models.

Installing strawberry-graphql-django package from the python package repository.

pip install strawberry-graphql-django

Full documentation is available under docs github folder.

  • GraphQL type generation from models
  • Filtering, pagination and ordering
  • Basic create, retrieve, update and delete (CRUD) types and mutations
  • Basic Django auth support, current user query, login and logout mutations
  • Django sync and async views
  • Unit test integration

Basic Usage

# models.py
from django.db import models

class Fruit(models.Model):
    """A tasty treat"""
    name = models.CharField(max_length=20)
    color = models.ForeignKey('Color', blank=True, null=True,
            related_name='fruits', on_delete=models.CASCADE)

class Color(models.Model):
    name = models.CharField(
        max_length=20,
        help_text="field description",
    )
# types.py
import strawberry
from strawberry import auto
from typing import List
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]
# schema.py
import strawberry
from typing import List
from .types import Fruit

@strawberry.type
class Query:
    fruits: List[Fruit] = strawberry.django.field()

schema = strawberry.Schema(query=Query)

Code above generates following schema.

"""
A tasty treat
"""
type Fruit {
  id: ID!
  name: String!
  color: Color
}

type Color {
  id: ID!
  """
  field description
  """
  name: String!
  fruits: [Fruit!]
}

type Query {
  fruits: [Fruit!]!
}
# urls.py
from django.urls import include, path
from strawberry.django.views import AsyncGraphQLView
from .schema import schema

urlpatterns = [
    path('graphql', AsyncGraphQLView.as_view(schema=schema)),
]
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].