mirror of
https://github.com/graphql-python/graphene-django.git
synced 2024-11-25 11:04:11 +03:00
Updated Tutorial with Highlights (#801)
This commit is contained in:
parent
def6b15e5b
commit
e51e60209a
58
docs/schema.py
Normal file
58
docs/schema.py
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
import graphene
|
||||||
|
|
||||||
|
from graphene_django.types import DjangoObjectType
|
||||||
|
|
||||||
|
from cookbook.ingredients.models import Category, Ingredient
|
||||||
|
|
||||||
|
|
||||||
|
class CategoryType(DjangoObjectType):
|
||||||
|
class Meta:
|
||||||
|
model = Category
|
||||||
|
|
||||||
|
|
||||||
|
class IngredientType(DjangoObjectType):
|
||||||
|
class Meta:
|
||||||
|
model = Ingredient
|
||||||
|
|
||||||
|
|
||||||
|
class Query(object):
|
||||||
|
category = graphene.Field(CategoryType,
|
||||||
|
id=graphene.Int(),
|
||||||
|
name=graphene.String())
|
||||||
|
all_categories = graphene.List(CategoryType)
|
||||||
|
|
||||||
|
|
||||||
|
ingredient = graphene.Field(IngredientType,
|
||||||
|
id=graphene.Int(),
|
||||||
|
name=graphene.String())
|
||||||
|
all_ingredients = graphene.List(IngredientType)
|
||||||
|
|
||||||
|
def resolve_all_categories(self, info, **kwargs):
|
||||||
|
return Category.objects.all()
|
||||||
|
|
||||||
|
def resolve_all_ingredients(self, info, **kwargs):
|
||||||
|
return Ingredient.objects.all()
|
||||||
|
|
||||||
|
def resolve_category(self, info, **kwargs):
|
||||||
|
id = kwargs.get('id')
|
||||||
|
name = kwargs.get('name')
|
||||||
|
|
||||||
|
if id is not None:
|
||||||
|
return Category.objects.get(pk=id)
|
||||||
|
|
||||||
|
if name is not None:
|
||||||
|
return Category.objects.get(name=name)
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
def resolve_ingredient(self, info, **kwargs):
|
||||||
|
id = kwargs.get('id')
|
||||||
|
name = kwargs.get('name')
|
||||||
|
|
||||||
|
if id is not None:
|
||||||
|
return Ingredient.objects.get(pk=id)
|
||||||
|
|
||||||
|
if name is not None:
|
||||||
|
return Ingredient.objects.get(name=name)
|
||||||
|
|
||||||
|
return None
|
|
@ -417,67 +417,10 @@ Getting single objects
|
||||||
So far, we have been able to fetch list of objects and follow relation. But what about single objects?
|
So far, we have been able to fetch list of objects and follow relation. But what about single objects?
|
||||||
|
|
||||||
We can update our schema to support that, by adding new query for ``ingredient`` and ``category`` and adding arguments, so we can query for specific objects.
|
We can update our schema to support that, by adding new query for ``ingredient`` and ``category`` and adding arguments, so we can query for specific objects.
|
||||||
|
Add the **Highlighted** lines to ``cookbook/ingredients/schema.py``
|
||||||
|
|
||||||
.. code:: python
|
.. literalinclude:: schema.py
|
||||||
|
:emphasize-lines: 19-21,25-27,36-58
|
||||||
import graphene
|
|
||||||
|
|
||||||
from graphene_django.types import DjangoObjectType
|
|
||||||
|
|
||||||
from cookbook.ingredients.models import Category, Ingredient
|
|
||||||
|
|
||||||
|
|
||||||
class CategoryType(DjangoObjectType):
|
|
||||||
class Meta:
|
|
||||||
model = Category
|
|
||||||
|
|
||||||
|
|
||||||
class IngredientType(DjangoObjectType):
|
|
||||||
class Meta:
|
|
||||||
model = Ingredient
|
|
||||||
|
|
||||||
|
|
||||||
class Query(object):
|
|
||||||
category = graphene.Field(CategoryType,
|
|
||||||
id=graphene.Int(),
|
|
||||||
name=graphene.String())
|
|
||||||
all_categories = graphene.List(CategoryType)
|
|
||||||
|
|
||||||
|
|
||||||
ingredient = graphene.Field(IngredientType,
|
|
||||||
id=graphene.Int(),
|
|
||||||
name=graphene.String())
|
|
||||||
all_ingredients = graphene.List(IngredientType)
|
|
||||||
|
|
||||||
def resolve_all_categories(self, info, **kwargs):
|
|
||||||
return Category.objects.all()
|
|
||||||
|
|
||||||
def resolve_all_ingredients(self, info, **kwargs):
|
|
||||||
return Ingredient.objects.all()
|
|
||||||
|
|
||||||
def resolve_category(self, info, **kwargs):
|
|
||||||
id = kwargs.get('id')
|
|
||||||
name = kwargs.get('name')
|
|
||||||
|
|
||||||
if id is not None:
|
|
||||||
return Category.objects.get(pk=id)
|
|
||||||
|
|
||||||
if name is not None:
|
|
||||||
return Category.objects.get(name=name)
|
|
||||||
|
|
||||||
return None
|
|
||||||
|
|
||||||
def resolve_ingredient(self, info, **kwargs):
|
|
||||||
id = kwargs.get('id')
|
|
||||||
name = kwargs.get('name')
|
|
||||||
|
|
||||||
if id is not None:
|
|
||||||
return Ingredient.objects.get(pk=id)
|
|
||||||
|
|
||||||
if name is not None:
|
|
||||||
return Ingredient.objects.get(name=name)
|
|
||||||
|
|
||||||
return None
|
|
||||||
|
|
||||||
Now, with the code in place, we can query for single objects.
|
Now, with the code in place, we can query for single objects.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user