Skip to content

Commit b7ff656

Browse files
Args Support Added for Generic Reference Field and Generic Lazy Reference Field
1 parent 7419413 commit b7ff656

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

graphene_mongo/fields.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from graphene.types.utils import get_type
1111
from graphene.utils.str_converters import to_snake_case
1212
from graphql import ResolveInfo
13+
from mongoengine.base import get_document
1314
from promise import Promise
1415
from graphql_relay import from_global_id
1516
from graphene.relay import ConnectionField
@@ -177,6 +178,9 @@ def get_reference_field(r, kv):
177178
(mongoengine.LazyReferenceField, mongoengine.ReferenceField),
178179
):
179180
field = convert_mongoengine_field(mongo_field, self.registry)
181+
if isinstance(mongo_field, mongoengine.GenericReferenceField):
182+
r.update({kv[0]: graphene.ID()})
183+
return r
180184
if callable(getattr(field, "get_type", None)):
181185
_type = field.get_type()
182186
if _type:
@@ -207,6 +211,11 @@ def get_queryset(self, model, info, required_fields=list(), skip=None, limit=Non
207211
except TypeError:
208212
reference_obj = reference_fields[arg_name].document_type(pk=arg)
209213
hydrated_references[arg_name] = reference_obj
214+
elif arg_name in self.model._fields_ordered and isinstance(getattr(self.model, arg_name),
215+
mongoengine.fields.GenericReferenceField):
216+
reference_obj = get_document(self.registry._registry_string_map[from_global_id(arg)[0]])(
217+
pk=from_global_id(arg)[1])
218+
hydrated_references[arg_name] = reference_obj
210219
elif arg_name == "id":
211220
hydrated_references["id"] = from_global_id(args.pop("id", None))[1]
212221
args.update(hydrated_references)

0 commit comments

Comments
 (0)