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