Used LazyNativeField for NodeField

This commit is contained in:
Syrus Akbary 2015-09-29 01:18:32 -07:00
parent c52733ac9c
commit 2faa8223e8
2 changed files with 14 additions and 3 deletions

View File

@ -138,6 +138,16 @@ class LazyField(Field):
def field(self): def field(self):
return self.inner_field.field 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): class TypeField(Field):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(TypeField, self).__init__(self.field_type, *args, **kwargs) super(TypeField, self).__init__(self.field_type, *args, **kwargs)

View File

@ -4,7 +4,7 @@ from graphql_relay.node.node import (
) )
from graphene.env import get_global_schema from graphene.env import get_global_schema
from graphene.core.types import Interface from graphene.core.types import Interface
from graphene.core.fields import Field, NativeField from graphene.core.fields import Field, LazyNativeField
def getSchemaNode(schema=None): 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() return super(Node, cls).get_graphql_type()
class NodeField(NativeField): class NodeField(LazyNativeField):
field = _nodeDefinitions.nodeField def get_field(self):
return _nodeDefinitions.nodeField
return Node, NodeField return Node, NodeField