diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py index a2d0f6dc5cb233d9b665757c26bc6f86aedff991..18a63a1daf9b6d62885e2bee2849ad7dbe7820bc 100644 --- a/djangoldp/serializers.py +++ b/djangoldp/serializers.py @@ -16,6 +16,8 @@ from rest_framework.settings import api_settings from rest_framework.utils.field_mapping import get_nested_relation_kwargs from rest_framework.utils.serializer_helpers import ReturnDict +from djangoldp.models import Model + class LDListMixin: def to_internal_value(self, data): @@ -40,9 +42,8 @@ class LDListMixin: def get_value(self, dictionary): try: object_list = dictionary["@graph"] - view_name = '{}-list'.format(self.parent.Meta.model._meta.object_name.lower()) - part_id = '/{}'.format(get_resolver().reverse_dict[view_name][0][0][0]) - obj = next(filter(lambda o: part_id in o['@id'], object_list)) + container_id = Model.container_id(self.parent.instance) + obj = next(filter(lambda o: container_id in o['@id'], object_list)) list = super().get_value(obj) try: list = next(filter(lambda o: list['@id'] == o['@id'], object_list)) @@ -197,9 +198,8 @@ class LDPSerializer(HyperlinkedModelSerializer): def get_value(self, dictionary): try: object_list = dictionary["@graph"] - part_id = '/{}'.format(get_resolver().reverse_dict[self.parent_view_name][0][0][0], - self.parent.instance.pk) - obj = next(filter(lambda o: part_id in o['@id'], object_list)) + resource_id = Model.resource_id(self.parent.instance) + obj = next(filter(lambda o: resource_id in o['@id'], object_list)) return super().get_value(obj) except KeyError: return super().get_value(dictionary) @@ -288,10 +288,8 @@ class LDPSerializer(HyperlinkedModelSerializer): def get_value(self, dictionary): try: object_list = dictionary["@graph"] - view_name = '{}-list'.format(self.parent.Meta.model._meta.object_name.lower()) - part_id = '/{}'.format(get_resolver().reverse_dict[view_name][0][0][0], - self.parent.instance.pk) - obj = next(filter(lambda o: part_id in o[self.url_field_name], object_list)) + container_id = Model.container_path(self.parent.instance) + obj = next(filter(lambda o: container_id in o[self.url_field_name], object_list)) item = super().get_value(obj) full_item = None if item is empty: