From c0c489e7edb69f0d1c092c85ef94afa4c0126156 Mon Sep 17 00:00:00 2001 From: Sylvain Le Bon <sylvain@happy-dev.fr> Date: Sun, 4 Feb 2018 22:21:28 +0100 Subject: [PATCH] bugfix: set slug for ManyToMany relations --- serializers.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/serializers.py b/serializers.py index ef08ff70..6ec2ef29 100644 --- a/serializers.py +++ b/serializers.py @@ -1,5 +1,5 @@ from django.core.urlresolvers import get_resolver -from rest_framework.relations import HyperlinkedRelatedField +from rest_framework.relations import HyperlinkedRelatedField, ManyRelatedField from rest_framework.serializers import HyperlinkedModelSerializer, ListSerializer, CharField from rest_framework.utils.serializer_helpers import ReturnDict @@ -13,13 +13,18 @@ class ContainerSerializer(ListSerializer): class LDPSerializer(HyperlinkedModelSerializer): url_field_name = "@id" + def update_lookup_field(self, field): + #get the field name associated with the url of the view + lookup_field = get_resolver().reverse_dict[field.view_name][0][0][1][0] + field.lookup_field = lookup_field + field.lookup_url_kwarg = lookup_field def __init__(self, *args, **kwargs): super(LDPSerializer, self).__init__(*args, **kwargs) for name, field in self.fields.items(): if isinstance(field, HyperlinkedRelatedField): - lookup_field = get_resolver().reverse_dict[field.view_name][0][0][1][0] - field.lookup_field = lookup_field - field.lookup_url_kwarg = lookup_field + self.update_lookup_field(field) + elif isinstance(field, ManyRelatedField): + self.update_lookup_field(field.child_relation) @classmethod def many_init(cls, *args, **kwargs): -- GitLab