33from ..core .types import (Boolean , Field , InputObjectType , Interface , List ,
44 Mutation , ObjectType , String )
55from ..core .types .argument import ArgumentsGroup
6- from ..core .types .base import LazyType
76from ..core .types .definitions import NonNull
87from ..utils import memoize
98from .fields import GlobalIDField
@@ -24,11 +23,6 @@ class PageInfo(ObjectType):
2423
2524class Edge (ObjectType ):
2625 '''An edge in a connection.'''
27- class Meta :
28- type_name = 'DefaultEdge'
29-
30- node = Field (LazyType (lambda object_type : object_type .node_type ),
31- description = 'The item at the end of the edge' )
3226 cursor = String (
3327 required = True , description = 'A cursor for use in pagination' )
3428
@@ -37,10 +31,11 @@ class Meta:
3731 def for_node (cls , node ):
3832 from graphene .relay .utils import is_node
3933 assert is_node (node ), 'ObjectTypes in a edge have to be Nodes'
34+ node_field = Field (node , description = 'The item at the end of the edge' )
4035 return type (
4136 '%s%s' % (node ._meta .type_name , cls ._meta .type_name ),
4237 (cls ,),
43- {'node_type' : node })
38+ {'node_type' : node , 'node' : node_field })
4439
4540
4641class Connection (ObjectType ):
@@ -50,21 +45,20 @@ class Meta:
5045
5146 page_info = Field (PageInfo , required = True ,
5247 description = 'The Information to aid in pagination' )
53- edges = List (LazyType (lambda object_type : object_type .edge_type ),
54- description = 'Information to aid in pagination.' )
5548
5649 _connection_data = None
5750
5851 @classmethod
5952 @memoize
6053 def for_node (cls , node , edge_type = None ):
6154 from graphene .relay .utils import is_node
62- edge_type = edge_type or Edge
55+ edge_type = edge_type or Edge . for_node ( node )
6356 assert is_node (node ), 'ObjectTypes in a connection have to be Nodes'
57+ edges = List (edge_type , description = 'Information to aid in pagination.' )
6458 return type (
6559 '%s%s' % (node ._meta .type_name , cls ._meta .type_name ),
6660 (cls ,),
67- {'edge_type' : edge_type . for_node ( node ) })
61+ {'edge_type' : edge_type , 'edges' : edges })
6862
6963 def set_connection_data (self , data ):
7064 self ._connection_data = data
0 commit comments