diff --git a/djangoldp/views.py b/djangoldp/views.py
index bae30f1beb4760329ac3dcc609dc887d16fc047c..d08943348bd13ef0945b26563b3fbda86eb4eb21 100644
--- a/djangoldp/views.py
+++ b/djangoldp/views.py
@@ -306,7 +306,16 @@ class LDPViewSetGenerator(ModelViewSet):
         return r'(?P<{}>{}+)/'.format(lookup_field, lookup_group)
 
     @classonlymethod
-    def nested_urls(cls, nested_field, **kwargs):
+    def nested_urls(cls, nested_field, view_set=None, **kwargs):
+        '''
+        constructs url patterns for parameterised nested_field
+        :param view_set: an optional CustomViewSet to mixin with the LDPNestedViewSet implementation
+        '''
+        if view_set is not None:
+            class LDPNestedCustomViewSet(LDPNestedViewSet, view_set):
+                pass
+            return LDPNestedCustomViewSet.nested_urls(nested_field, **kwargs)
+
         return LDPNestedViewSet.nested_urls(nested_field, **kwargs)
 
     @classonlymethod
@@ -326,7 +335,18 @@ class LDPViewSetGenerator(ModelViewSet):
 
         # append nested fields to the urls list
         for field in kwargs.get('nested_fields') or cls.nested_fields:
-            urls.append(url('^' + detail_expr + field + '/', cls.nested_urls(field, **kwargs)))
+            # the nested property may have a custom viewset defined
+            try:
+                nested_model = kwargs['model']._meta.get_field(field).related_model
+            except FieldDoesNotExist:
+                nested_model = getattr(kwargs['model'], field).field.model
+
+            if hasattr(nested_model, 'get_view_set'):
+                kwargs['view_set'] = nested_model.get_view_set()
+                urls_fct = kwargs['view_set'].nested_urls # our custom view_set may override nested_urls
+            else:
+                urls_fct = cls.nested_urls
+            urls.append(url('^' + detail_expr + field + '/', urls_fct(field, **kwargs)))
 
         return include(urls)