File tree Expand file tree Collapse file tree 2 files changed +36
-1
lines changed Expand file tree Collapse file tree 2 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -251,9 +251,12 @@ def connection_resolver(
251251 return on_resolve (iterable )
252252
253253 def wrap_resolve (self , parent_resolver ):
254+ # skip the wrap_resolve method on ConnectionField as it's already
255+ # wrapping the connection_resolver, so we don't want to do it twice
256+ resolver = super (ConnectionField , self ).wrap_resolve (parent_resolver )
254257 return partial (
255258 self .connection_resolver ,
256- parent_resolver ,
259+ resolver ,
257260 self .connection_type ,
258261 self .get_manager (),
259262 self .get_queryset_resolver (),
Original file line number Diff line number Diff line change @@ -748,3 +748,35 @@ class Query(ObjectType):
748748 match = "DjangoConnectionField only accepts DjangoObjectType types as underlying type" ,
749749 ):
750750 Schema (query = Query )
751+
752+ def test_can_use_custom_resolver (self ):
753+ def resolve_some_people (* args , ** kwargs ):
754+ return PersonModel .objects .filter (name = "Bob" )
755+
756+ class PersonType (DjangoObjectType ):
757+ class Meta :
758+ model = PersonModel
759+ interfaces = (Node ,)
760+
761+ class Query (ObjectType ):
762+ people = DjangoConnectionField (PersonType , resolver = resolve_some_people )
763+
764+ schema = Schema (query = Query )
765+ PersonModel .objects .create (name = "Bob" )
766+ PersonModel .objects .create (name = "Alice" )
767+
768+ query = """
769+ query {
770+ people {
771+ edges {
772+ node {
773+ name
774+ }
775+ }
776+ }
777+ }
778+ """
779+
780+ result = schema .execute (query )
781+ assert not result .errors
782+ assert result .data == {"people" : {"edges" : [{"node" : {"name" : "Bob" }}]}}
You can’t perform that action at this time.
0 commit comments