File tree 2 files changed +36
-1
lines changed
2 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -251,9 +251,12 @@ def connection_resolver(
251
251
return on_resolve (iterable )
252
252
253
253
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 )
254
257
return partial (
255
258
self .connection_resolver ,
256
- parent_resolver ,
259
+ resolver ,
257
260
self .connection_type ,
258
261
self .get_manager (),
259
262
self .get_queryset_resolver (),
Original file line number Diff line number Diff line change @@ -748,3 +748,35 @@ class Query(ObjectType):
748
748
match = "DjangoConnectionField only accepts DjangoObjectType types as underlying type" ,
749
749
):
750
750
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