Skip to content

Commit d56eef7

Browse files
author
Sebastian Hernandez
committed
Unifiy OneToOne Rel
1 parent fbdc10f commit d56eef7

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

graphene_django/converter.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,7 @@ def dynamic_type():
289289

290290
@convert_django_field.register(models.OneToOneField)
291291
@convert_django_field.register(models.ForeignKey)
292+
@convert_django_field.register(models.OneToOneRel)
292293
def convert_field_to_djangomodel(field, registry=None):
293294
model = field.related_model
294295

@@ -297,9 +298,14 @@ def dynamic_type():
297298
if not _type:
298299
return
299300

301+
if isinstance(field, models.OneToOneRel):
302+
description = get_django_field_description(field.field)
303+
else:
304+
description = get_django_field_description(field)
305+
300306
return DjangoInstanceField(
301307
_type,
302-
description=get_django_field_description(field),
308+
description=description,
303309
required=not field.null,
304310
is_foreign_key=True,
305311
)

graphene_django/fields.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,15 @@ def instance_resolver(
297297
queryset = None
298298
unique_filter = {}
299299
if is_foreign_key:
300-
pk = getattr(root, "{}_id".format(info.field_name))
300+
pk_name = "{}_id".format(info.field_name)
301+
pk = None
302+
if hasattr(root, pk_name):
303+
pk = getattr(root, pk_name)
304+
else:
305+
fk_obj = getattr(root, info.field_name)
306+
if fk_obj:
307+
pk = fk_obj.pk
308+
301309
if pk is not None:
302310
unique_filter["pk"] = pk
303311
unique_fields = ()

0 commit comments

Comments
 (0)