diff --git a/djangoldp/tests/models.py b/djangoldp/tests/models.py
index eb4d11be75049641c0783a259c2ce5f2f4012e32..288a0b35643e5a50592b40c0626334057de6b5ed 100644
--- a/djangoldp/tests/models.py
+++ b/djangoldp/tests/models.py
@@ -137,40 +137,6 @@ class PermissionlessDummy(Model):
         )
 
 
-class Invoice(Model):
-    title = models.CharField(max_length=255, blank=True, null=True)
-    date = models.DateField(blank=True, null=True)
-
-    class Meta(Model.Meta):
-        depth = 2
-        anonymous_perms = ['view']
-        authenticated_perms = ['inherit', 'add']
-        owner_perms = ['inherit', 'change', 'delete', 'control']
-
-
-class Batch(Model):
-    invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE, related_name='batches')
-    title = models.CharField(max_length=255, blank=True, null=True)
-
-    class Meta(Model.Meta):
-        serializer_fields = ['@id', 'title', 'invoice', 'tasks']
-        anonymous_perms = ['view', 'add']
-        authenticated_perms = ['inherit', 'add']
-        owner_perms = ['inherit', 'change', 'delete', 'control']
-        depth = 1
-
-
-class Task(models.Model):
-    batch = models.ForeignKey(Batch, on_delete=models.CASCADE, related_name='tasks')
-    title = models.CharField(max_length=255)
-
-    class Meta(Model.Meta):
-        serializer_fields = ['@id', 'title', 'batch']
-        anonymous_perms = ['view']
-        authenticated_perms = ['inherit', 'add']
-        owner_perms = ['inherit', 'change', 'delete', 'control']
-
-
 class Post(Model):
     content = models.CharField(max_length=255)
     author = models.ForeignKey(UserProfile, blank=True, null=True, on_delete=models.SET_NULL)
@@ -185,12 +151,22 @@ class Post(Model):
         owner_perms = ['inherit']
 
 
+class Invoice(Model):
+    title = models.CharField(max_length=255, blank=True, null=True)
+    date = models.DateField(blank=True, null=True)
+
+    class Meta(Model.Meta):
+        depth = 2
+        anonymous_perms = ['view']
+        authenticated_perms = ['inherit', 'add']
+        owner_perms = ['inherit', 'change', 'delete', 'control']
+
+
 class Circle(Model):
     name = models.CharField(max_length=255, blank=True)
     description = models.CharField(max_length=255, blank=True)
     team = models.ManyToManyField(settings.AUTH_USER_MODEL, through="CircleMember", blank=True)
-    owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="owned_circles", on_delete=models.DO_NOTHING,
-                              null=True, blank=True)
+    owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="owned_circles", on_delete=models.DO_NOTHING, null=True, blank=True)
 
     class Meta(Model.Meta):
         anonymous_perms = ['view', 'add', 'delete', 'add', 'change', 'control']
@@ -199,6 +175,18 @@ class Circle(Model):
         depth = 1
 
 
+class Batch(Model):
+    invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE, related_name='batches')
+    title = models.CharField(max_length=255, blank=True, null=True)
+
+    class Meta(Model.Meta):
+        serializer_fields = ['@id', 'title', 'invoice', 'tasks']
+        anonymous_perms = ['view', 'add']
+        authenticated_perms = ['inherit', 'add']
+        owner_perms = ['inherit', 'change', 'delete', 'control']
+        depth = 1
+
+
 class CircleMember(Model):
     circle = models.ForeignKey(Circle, on_delete=models.CASCADE, related_name='members')
     user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="circles")
@@ -212,6 +200,17 @@ class CircleMember(Model):
         rdf_type = 'hd:circlemember'
 
 
+class Task(models.Model):
+    batch = models.ForeignKey(Batch, on_delete=models.CASCADE, related_name='tasks')
+    title = models.CharField(max_length=255)
+
+    class Meta(Model.Meta):
+        serializer_fields = ['@id', 'title', 'batch']
+        anonymous_perms = ['view']
+        authenticated_perms = ['inherit', 'add']
+        owner_perms = ['inherit', 'change', 'delete', 'control']
+
+
 class Project(Model):
     description = models.CharField(max_length=255, null=True, blank=False)
     team = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name='projects')
diff --git a/djangoldp/tests/runner.py b/djangoldp/tests/runner.py
index af89c6b874dac8a703ed4fcb1ea802455b4c0e23..32f99f731b8b8e326382770e7508ca6fb85d5079 100644
--- a/djangoldp/tests/runner.py
+++ b/djangoldp/tests/runner.py
@@ -25,7 +25,7 @@ failures = test_runner.run_tests([
     'djangoldp.tests.tests_pagination',
     'djangoldp.tests.tests_inbox',
     'djangoldp.tests.tests_backlinks_service',
-    #'djangoldp.tests.tests_temp'
+    # 'djangoldp.tests.tests_temp'
 ])
 if failures:
     sys.exit(failures)
diff --git a/djangoldp/tests/tests_get.py b/djangoldp/tests/tests_get.py
index a32a80bd9255ef94478b6a66911417822ccb6b5c..f2486a1a4612ba330060535012cd28ce66320c57 100644
--- a/djangoldp/tests/tests_get.py
+++ b/djangoldp/tests/tests_get.py
@@ -88,6 +88,7 @@ class TestGET(APITestCase):
         self.assertEqual(response.status_code, 200)
         self.assertEquals(response.data['@id'], 'http://happy-dev.fr/invoices/{}/batches/'.format(invoice.pk))
         self.assertEquals(len(response.data['ldp:contains']), 2)
+        self.assertEquals(response.data['ldp:contains'][0]['invoice']['@id'], 'http://happy-dev.fr/invoices/{}/'.format(invoice.pk))
 
     def test_serializer_excludes(self):
         date = DateModel.objects.create(excluded='test', value=datetime.now())
diff --git a/djangoldp/tests/tests_save.py b/djangoldp/tests/tests_save.py
index d1ab7b30e1f4a4a8b0454f023239ca1ada46d257..a785233b4a729cf748ec289aa3d7563304a39a0a 100644
--- a/djangoldp/tests/tests_save.py
+++ b/djangoldp/tests/tests_save.py
@@ -284,6 +284,41 @@ class Save(TestCase):
                          "http://testserver/resources/{}/".format(resource.pk))
         self.assertEqual(response.data['title'], "new job")
 
+
+    def test_nested_container_bis(self):
+        invoice = Invoice.objects.create()
+        body = {
+            'http://happy-dev.fr/owl/#title': "new batch",
+        }
+
+        response = self.client.post('/invoices/{}/batches/'.format(invoice.pk),
+                                    data=json.dumps(body),
+                                    content_type='application/ld+json')
+        self.assertEqual(response.status_code, 201)
+        self.assertEqual(response.data['invoice']['@id'],
+                         "http://happy-dev.fr/invoices/{}/".format(invoice.pk))
+        self.assertEqual(response.data['title'], "new batch")
+
+    def test_nested_container_ter(self):
+        circle = Circle.objects.create()
+        body = {
+            'user' : {
+                "username" : "hubl-workaround-493"
+            },
+            # 'circle' : {},
+            '@context': {
+                "@vocab": "http://happy-dev.fr/owl/#",
+            }
+        }
+
+        response = self.client.post('/circles/{}/members/'.format(circle.pk),
+                                    data=json.dumps(body),
+                                    content_type='application/ld+json')
+        self.assertEqual(response.status_code, 201)
+        self.assertEqual(response.data['circle']['@id'],
+                     "http://testserver/circles/{}/".format(circle.pk))
+
+
     def test_nested_container_federated(self):
         resource = Resource.objects.create()
         body = {
diff --git a/djangoldp/tests/tests_temp.py b/djangoldp/tests/tests_temp.py
index db4dba0863fe0edbfde9f2a60c88eb5862017afb..12e99f804472d34eec34fac1e9fbca77dc827660 100644
--- a/djangoldp/tests/tests_temp.py
+++ b/djangoldp/tests/tests_temp.py
@@ -5,6 +5,7 @@ from django.test import TestCase
 from rest_framework.test import APIRequestFactory, APIClient
 
 from djangoldp.models import LDPSource
+from djangoldp.tests.models import Invoice, Circle
 
 
 class TestTemp(TestCase):
diff --git a/djangoldp/views.py b/djangoldp/views.py
index 6e12304e21c2d655e5b9593b9b577302ee4eafe2..09d0a54352248550cec9291ef3e86ecf8feb985b 100644
--- a/djangoldp/views.py
+++ b/djangoldp/views.py
@@ -381,6 +381,10 @@ class LDPViewSet(LDPViewSetGenerator):
             '@id': {'lookup_field': lookup_field}},
                      'depth': getattr(self, 'depth', Model.get_meta(self.model, 'depth', 0)),
                      'extra_fields': self.nested_fields}
+        if self.fields:
+            meta_args['fields'] = self.fields
+        else:
+            meta_args['exclude'] = Model.get_meta(self.model, 'serializer_fields_exclude') or ()
         return self.build_serializer(meta_args, 'Read')
 
     def build_write_serializer(self):
@@ -390,14 +394,15 @@ class LDPViewSet(LDPViewSetGenerator):
             '@id': {'lookup_field': lookup_field}},
                      'depth': 10,
                      'extra_fields': self.nested_fields}
-        return self.build_serializer(meta_args, 'Write')
-
-    def build_serializer(self, meta_args, name_prefix):
-        # create the Meta class to associate to LDPSerializer, using meta_args param
         if self.fields:
             meta_args['fields'] = self.fields
         else:
             meta_args['exclude'] = self.exclude or Model.get_meta(self.model, 'serializer_fields_exclude') or ()
+        return self.build_serializer(meta_args, 'Write')
+
+    def build_serializer(self, meta_args, name_prefix):
+        # create the Meta class to associate to LDPSerializer, using meta_args param
+
         meta_class = type('Meta', (), meta_args)
 
         from djangoldp.serializers import LDPSerializer