From 33673a186bb34ff58f7070c122be8f818c022beb Mon Sep 17 00:00:00 2001 From: Julien Barreau Date: Thu, 17 Aug 2023 16:07:22 +0200 Subject: [PATCH] fix(smart_field): don't try to compute smart fields on null relations (#146) --- django_forest/resources/utils/smart_field.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/django_forest/resources/utils/smart_field.py b/django_forest/resources/utils/smart_field.py index efe6472..58bc13c 100644 --- a/django_forest/resources/utils/smart_field.py +++ b/django_forest/resources/utils/smart_field.py @@ -66,15 +66,19 @@ def _handle_smart_field_on_relations(self, queryset, base_collection, params, ma collection_name: [params.get("fields", {}).get(relation_field["field"])] } } + self._handle_smart_field_for_relation(queryset, relation_field, collection_name, transformed_params, many) - if many: - for item in queryset: + def _handle_smart_field_for_relation(self, queryset, relation_field, collection_name, params, many): + if many: + for item in queryset: + if hasattr(item, relation_field["field"]): self.handle_smart_fields( - getattr(item, relation_field["field"]), collection_name, transformed_params, False, False + getattr(item, relation_field["field"]), collection_name, params, False, False ) - else: + else: + if hasattr(queryset, relation_field["field"]): self.handle_smart_fields( - getattr(queryset, relation_field["field"]), collection_name, transformed_params, False, False + getattr(queryset, relation_field["field"]), collection_name, params, False, False ) def __get_relations_for_smart_fields(self, base_collection, params):