Скаляры (Scalars)¶
Graphene определяет следующие базовые типы Scalar
:
graphene.String
graphene.Int
graphene.Float
graphene.Boolean
graphene.ID
Graphene также предоставляет кастомные Scalars
для дат, времени и JSON:
graphene.types.datetime.DateTime
graphene.types.datetime.Time
graphene.types.json.JSONString
Кастомные скаляры(scalars)¶
Вы можете создавать кастомные Scalar
для Вашей схемы. Пример создания datetime scalar
:
import datetime
from graphene.types import Scalar
from graphql.language import ast
class DateTime(Scalar):
'''DateTime Scalar Description'''
@staticmethod
def serialize(dt):
return dt.isoformat()
@staticmethod
def parse_literal(node):
if isinstance(node, ast.StringValue):
return datetime.datetime.strptime(
node.value, "%Y-%m-%dT%H:%M:%S.%f")
@staticmethod
def parse_value(value):
return datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M:%S.%f")
Монтирование скаляров (scalars)¶
Scalars
монтируются в объектные типыObjectType
, интерфейсыInterface
или мутацииMutation
, и ведут себя как поляField
.
class Person(graphene.ObjectType):
name = graphene.String()
# Is equivalent to:
class Person(graphene.ObjectType):
name = graphene.Field(graphene.String)
Примечание: при использовании конструктораField
напрямую, передавайте тип, а не сущность.
Типы, смонтированные в полеField
, ведут себя как аргументы Argument
.
graphene.Field(graphene.String, to=graphene.String())
# Is equivalent to:
graphene.Field(graphene.String, to=graphene.Argument(graphene.String))