From 2faa8223e8df7f5ad992fc0554a6869c0c32bef8 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Tue, 29 Sep 2015 01:18:32 -0700 Subject: [PATCH] Used LazyNativeField for NodeField --- graphene/core/fields.py | 10 ++++++++++ graphene/relay/nodes.py | 7 ++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/graphene/core/fields.py b/graphene/core/fields.py index 1c008422..97a60fbe 100644 --- a/graphene/core/fields.py +++ b/graphene/core/fields.py @@ -138,6 +138,16 @@ class LazyField(Field): def field(self): return self.inner_field.field + +class LazyNativeField(LazyField): + def __init__(self, *args, **kwargs): + super(LazyNativeField, self).__init__(None, *args, **kwargs) + + @cached_property + def field(self): + return self.inner_field + + class TypeField(Field): def __init__(self, *args, **kwargs): super(TypeField, self).__init__(self.field_type, *args, **kwargs) diff --git a/graphene/relay/nodes.py b/graphene/relay/nodes.py index 11e1b6da..e2cb9c5f 100644 --- a/graphene/relay/nodes.py +++ b/graphene/relay/nodes.py @@ -4,7 +4,7 @@ from graphql_relay.node.node import ( ) from graphene.env import get_global_schema from graphene.core.types import Interface -from graphene.core.fields import Field, NativeField +from graphene.core.fields import Field, LazyNativeField def getSchemaNode(schema=None): @@ -36,7 +36,8 @@ def create_node_definitions(getNode=None, getNodeType=getNodeType, schema=None): return super(Node, cls).get_graphql_type() - class NodeField(NativeField): - field = _nodeDefinitions.nodeField + class NodeField(LazyNativeField): + def get_field(self): + return _nodeDefinitions.nodeField return Node, NodeField