diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py
index 291ae714efebd01e0d26976d693e9de7dea2b282..0539e862543ccfe587c04e814831eb12b605015d 100644
--- a/djangoldp/serializers.py
+++ b/djangoldp/serializers.py
@@ -364,7 +364,7 @@ class LDPSerializer(HyperlinkedModelSerializer):
                     object_list))
             else:
                 container_id = Model.container_id(self.parent.instance)
-                obj = next(filter(lambda o: container_id in o[self.url_field_name], object_list))
+                obj = next(filter(lambda o: container_id.lstrip('/') in o[self.url_field_name], object_list))
             item = super().get_value(obj)
             full_item = None
             if item is empty:
@@ -432,16 +432,23 @@ class LDPSerializer(HyperlinkedModelSerializer):
         for field_name in nested_fields_name:
             nested_fields.append((field_name, validated_data.pop(field_name)))
 
+        info = model_meta.get_field_info(instance)
         for attr, value in validated_data.items():
             if isinstance(value, dict):
                 slug_field = Model.slug_field(instance)
-                manager = getattr(instance, attr)
+                relation_info = info.relations.get(attr)
                 if slug_field in value:
                     kwargs = {slug_field: value[slug_field]}
-                    oldObj = manager._meta.model.objects.get(**kwargs)
+                    if relation_info.to_many:
+                        manager = getattr(instance, attr)
+                        oldObj = manager._meta.model.objects.get(**kwargs)
+                    else:
+                        oldObj = getattr(instance, attr)
                     value = self.update(instance=oldObj, validated_data=value)
                 else:
-                    value = self.internal_create(validated_data=value, model=manager._meta.model)
+                    if not relation_info.to_many:
+                        value[instance._meta.fields_map[attr].remote_field.name] = instance
+                    value = self.internal_create(validated_data=value, model=relation_info.related_model)
             setattr(instance, attr, value)
 
         instance.save()
diff --git a/djangoldp/tests/models.py b/djangoldp/tests/models.py
index 468377c8d7f2c07cce69f468c039967b423e14b4..95dcd8fdd1971f9d8b7c0227d58dd50ff22ac673 100644
--- a/djangoldp/tests/models.py
+++ b/djangoldp/tests/models.py
@@ -32,6 +32,11 @@ class Conversation(models.Model):
     author_user = models.ForeignKey(settings.AUTH_USER_MODEL)
 
 
+class UserProfile(Model):
+    description = models.CharField(max_length=255, blank=True, null=True)
+    user = models.OneToOneField(settings.AUTH_USER_MODEL)
+
+
 class Message(models.Model):
     text = models.CharField(max_length=255, blank=True, null=True)
     conversation = models.ForeignKey(Conversation, on_delete=models.DO_NOTHING)
@@ -81,4 +86,4 @@ class Post(Model):
         auto_author = 'author'
 
 
-get_user_model()._meta.serializer_fields = ['@id', 'username', 'first_name', 'last_name', 'email', 'conversation_set']
+get_user_model()._meta.serializer_fields = ['@id', 'username', 'first_name', 'last_name', 'email', 'userprofile']
diff --git a/djangoldp/tests/tests_update.py b/djangoldp/tests/tests_update.py
index 41f10a9089c5b2f3f92d0578f3b785d12873194a..1e3f22d2a92a24e481d593ba46159e209f980608 100644
--- a/djangoldp/tests/tests_update.py
+++ b/djangoldp/tests/tests_update.py
@@ -284,10 +284,10 @@ class Update(TestCase):
                 "http://happy-dev.fr/owl/#first_name": "Alexandre",
                 "http://happy-dev.fr/owl/#last_name": "Bourlier",
                 "http://happy-dev.fr/owl/#username": "alex",
-                'http://happy-dev.fr/owl/#conversation_set': {'@id': "_:b975"}
+                'http://happy-dev.fr/owl/#userprofile': {'@id': "_:b975"}
             }
         ]
         response = self.client.put('/users/{}/'.format(user.pk), data=json.dumps(body),
                                    content_type='application/ld+json')
         self.assertEqual(response.status_code, 200)
-        self.assertIn('conversation_set', response.data)
+        self.assertIn('userprofile', response.data)