Unifiy OneToOne Rel

This commit is contained in:
Sebastian Hernandez 2021-02-24 15:22:04 +01:00
parent fbdc10fb98
commit d56eef7600
2 changed files with 16 additions and 2 deletions

View File

@ -289,6 +289,7 @@ def convert_field_to_list_or_connection(field, registry=None):
@convert_django_field.register(models.OneToOneField)
@convert_django_field.register(models.ForeignKey)
@convert_django_field.register(models.OneToOneRel)
def convert_field_to_djangomodel(field, registry=None):
model = field.related_model
@ -297,9 +298,14 @@ def convert_field_to_djangomodel(field, registry=None):
if not _type:
return
if isinstance(field, models.OneToOneRel):
description = get_django_field_description(field.field)
else:
description = get_django_field_description(field)
return DjangoInstanceField(
_type,
description=get_django_field_description(field),
description=description,
required=not field.null,
is_foreign_key=True,
)

View File

@ -297,7 +297,15 @@ class DjangoInstanceField(Field):
queryset = None
unique_filter = {}
if is_foreign_key:
pk = getattr(root, "{}_id".format(info.field_name))
pk_name = "{}_id".format(info.field_name)
pk = None
if hasattr(root, pk_name):
pk = getattr(root, pk_name)
else:
fk_obj = getattr(root, info.field_name)
if fk_obj:
pk = fk_obj.pk
if pk is not None:
unique_filter["pk"] = pk
unique_fields = ()