From 04bada1cd186698847512e3dad66343aed644e36 Mon Sep 17 00:00:00 2001 From: dormantman Date: Mon, 16 Dec 2019 22:32:38 +0300 Subject: [PATCH] Fixed object names --- apps/collection/models.py | 15 +++++++++------ apps/collection/serializers/back.py | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/apps/collection/models.py b/apps/collection/models.py index 5c2e081c..41e0118a 100644 --- a/apps/collection/models.py +++ b/apps/collection/models.py @@ -112,19 +112,22 @@ class Collection(ProjectBaseMixin, CollectionDateMixin, @property def related_object_names(self) -> list: """Return related object names.""" - raw_object_names = {} - for related_object in [(related_object.id, related_object.name) for related_object in self._related_objects]: - instances = getattr(self, f'{related_object[1]}') + raw_objects = [] + for related_object in [related_object.name for related_object in self._related_objects]: + instances = getattr(self, f'{related_object}') if instances.exists(): for instance in instances.all(): - raw_object_names[related_object[0]] = instance.slug if hasattr(instance, 'slug') else None + raw_object = (instance.id, instance.slug) if hasattr(instance, 'slug') else ( + instance.id, None + ) + raw_objects.append(raw_object) # parse slugs related_objects = [] object_names = set() re_pattern = r'[\w]+' - for object_id in raw_object_names: - result = re.findall(re_pattern, raw_object_names[object_id]) + for object_id, raw_name, in raw_objects: + result = re.findall(re_pattern, raw_name) if result: name = ' '.join(result).capitalize() if name not in object_names: diff --git a/apps/collection/serializers/back.py b/apps/collection/serializers/back.py index d8472af1..35917142 100644 --- a/apps/collection/serializers/back.py +++ b/apps/collection/serializers/back.py @@ -21,7 +21,7 @@ class CollectionBackOfficeSerializer(CollectionBaseSerializer): source='get_collection_type_display', read_only=True) country = CountrySimpleSerializer(read_only=True) count_related_objects = serializers.IntegerField(read_only=True) - related_object_names = serializers.JSONField(read_only=True) + related_object_names = serializers.ListField(read_only=True) class Meta: model = models.Collection