Skip to content

Commit 89bc945

Browse files
Added support for self refernce of MongoengineConnectionField for non db fields
eg; class Person(Document) first_name = mongoengine.StringField(required=True) last_name = mongoengine.StringField(required=True) class Person(MongoengineObjectType): class Meta: model = models.Person interfaces = (Node,) friends_suggestions = MongoengineConnectionField("Person") def resolve_fiends_suggestions(self,info,**kwargs): return Person.objects.no_dereference.all()
1 parent 66b2bbc commit 89bc945

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

graphene_mongo/fields.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import mongoengine
88
from bson import DBRef
99
from graphene import Context
10+
from graphene.types.utils import get_type
1011
from graphene.utils.str_converters import to_snake_case
1112
from graphql import ResolveInfo
1213
from promise import Promise
@@ -186,6 +187,7 @@ def get_reference_field(r, kv):
186187

187188
@property
188189
def fields(self):
190+
self._type = get_type(self._type)
189191
return self._type._meta.fields
190192

191193
def get_queryset(self, model, info, required_fields=list(), **args):
@@ -214,8 +216,9 @@ def default_resolver(self, _root, info, required_fields=list(), **args):
214216

215217
if _root is not None:
216218
field_name = to_snake_case(info.field_name)
217-
if getattr(_root, field_name, []) is not None:
218-
args["pk__in"] = [r.id for r in getattr(_root, field_name, [])]
219+
if field_name in _root._fields_ordered:
220+
if getattr(_root, field_name, []) is not None:
221+
args["pk__in"] = [r.id for r in getattr(_root, field_name, [])]
219222

220223
connection_args = {
221224
"first": args.pop("first", None),

0 commit comments

Comments
 (0)