Skip to content
Snippets Groups Projects
Commit c0c489e7 authored by Sylvain Le Bon's avatar Sylvain Le Bon
Browse files

bugfix: set slug for ManyToMany relations

parent 54851033
No related branches found
No related tags found
No related merge requests found
from django.core.urlresolvers import get_resolver 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.serializers import HyperlinkedModelSerializer, ListSerializer, CharField
from rest_framework.utils.serializer_helpers import ReturnDict from rest_framework.utils.serializer_helpers import ReturnDict
...@@ -13,13 +13,18 @@ class ContainerSerializer(ListSerializer): ...@@ -13,13 +13,18 @@ class ContainerSerializer(ListSerializer):
class LDPSerializer(HyperlinkedModelSerializer): class LDPSerializer(HyperlinkedModelSerializer):
url_field_name = "@id" 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): def __init__(self, *args, **kwargs):
super(LDPSerializer, self).__init__(*args, **kwargs) super(LDPSerializer, self).__init__(*args, **kwargs)
for name, field in self.fields.items(): for name, field in self.fields.items():
if isinstance(field, HyperlinkedRelatedField): if isinstance(field, HyperlinkedRelatedField):
lookup_field = get_resolver().reverse_dict[field.view_name][0][0][1][0] self.update_lookup_field(field)
field.lookup_field = lookup_field elif isinstance(field, ManyRelatedField):
field.lookup_url_kwarg = lookup_field self.update_lookup_field(field.child_relation)
@classmethod @classmethod
def many_init(cls, *args, **kwargs): def many_init(cls, *args, **kwargs):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment