mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-11-15 15:25:35 +03:00
* 🔧 Add pre-commit config Similar to graphene and graphene-sqlalchemy * ⬆ Bump black * 👷 Lint on CI * ⬆ Bump flake8-black * 🔧 Keep excluding migrations * ⬆ Bump flake8 * 🔧 Remove black and flake8 from tox config * ⬆ Update pre-commit versions * Upgrade syntax to python 3.7+ * Format with pre-commit dedent docs/schema.py to allow formatting * Fix tests on python 3.7
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from cookbook.ingredients.models import Category, Ingredient
|
|
from graphene import Node
|
|
from graphene_django.filter import DjangoFilterConnectionField
|
|
from graphene_django.types import DjangoObjectType
|
|
|
|
|
|
# Graphene will automatically map the Category model's fields onto the CategoryNode.
|
|
# This is configured in the CategoryNode's Meta class (as you can see below)
|
|
class CategoryNode(DjangoObjectType):
|
|
class Meta:
|
|
model = Category
|
|
interfaces = (Node,)
|
|
fields = "__all__"
|
|
filter_fields = ["name", "ingredients"]
|
|
|
|
|
|
class IngredientNode(DjangoObjectType):
|
|
class Meta:
|
|
model = Ingredient
|
|
# Allow for some more advanced filtering here
|
|
interfaces = (Node,)
|
|
fields = "__all__"
|
|
filter_fields = {
|
|
"name": ["exact", "icontains", "istartswith"],
|
|
"notes": ["exact", "icontains"],
|
|
"category": ["exact"],
|
|
"category__name": ["exact"],
|
|
}
|
|
|
|
|
|
class Query:
|
|
category = Node.Field(CategoryNode)
|
|
all_categories = DjangoFilterConnectionField(CategoryNode)
|
|
|
|
ingredient = Node.Field(IngredientNode)
|
|
all_ingredients = DjangoFilterConnectionField(IngredientNode)
|