graphene-django/examples/cookbook-plain/cookbook/recipes/schema.py

53 lines
1.4 KiB
Python
Raw Normal View History

import graphene
from graphene_django.types import DjangoObjectType
from cookbook.recipes.models import Recipe, RecipeIngredient
class RecipeType(DjangoObjectType):
class Meta:
model = Recipe
class RecipeIngredientType(DjangoObjectType):
class Meta:
model = RecipeIngredient
2018-06-05 22:53:47 +03:00
class Query(object):
recipe = graphene.Field(RecipeType,
id=graphene.Int(),
title=graphene.String())
all_recipes = graphene.List(RecipeType)
recipeingredient = graphene.Field(RecipeIngredientType,
id=graphene.Int())
all_recipeingredients = graphene.List(RecipeIngredientType)
def resolve_recipe(self, args, context, info):
id = args.get('id')
title = args.get('title')
if id is not None:
return Recipe.objects.get(pk=id)
if title is not None:
return Recipe.objects.get(title=title)
return None
def resolve_recipeingredient(self, args, context, info):
id = args.get('id')
if id is not None:
return RecipeIngredient.objects.get(pk=id)
return None
def resolve_all_recipes(self, args, context, info):
return Recipe.objects.all()
def resolve_all_recipeingredients(self, args, context, info):
related = ['recipe', 'ingredient']
return RecipeIngredient.objects.select_related(*related).all()