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