diff --git a/serializers.py b/serializers.py index ef08ff7005b43e79cb40bd8c0a580addbc0c94a4..6ec2ef292223e04e6b65d2585fc0140909933359 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):