diff --git a/djangoldp/serializers.py b/djangoldp/serializers.py
index e0a62879307d8edda321cb18b61cf5af07fb5764..62d12c4b5c2a627943181dc4ccfe39ef2428ab90 100644
--- a/djangoldp/serializers.py
+++ b/djangoldp/serializers.py
@@ -3,12 +3,13 @@ from collections import OrderedDict, Mapping, Iterable
 from typing import Any
 from urllib import parse
 
+from django.db import transaction
 from django.conf import settings
 from django.contrib.auth import get_user_model
 from django.core.exceptions import ImproperlyConfigured
 from django.core.exceptions import ValidationError as DjangoValidationError
 from django.urls import resolve, Resolver404, get_script_prefix
-from django.urls import get_resolver
+from django.urls.resolvers import get_resolver
 from django.db.models import QuerySet
 from django.utils.datastructures import MultiValueDictKeyError
 from django.utils.encoding import uri_to_iri
@@ -629,7 +630,13 @@ class LDPSerializer(HyperlinkedModelSerializer):
         nested_fk_fields_name = list(filter(lambda key: isinstance(validated_data[key], dict), validated_data))
         for field_name in nested_fk_fields_name:
             field_dict = validated_data[field_name]
-            field_model = model._meta.get_field(field_name).related_model
+            try:
+                field_model = model._meta.get_field(field_name).related_model
+                print('field_model is ' + str(field_model))
+            except:
+                # not fk
+                print('except! not FK!')
+                continue
 
             slug_field = Model.slug_field(field_model)
             sub_inst = None
@@ -650,11 +657,12 @@ class LDPSerializer(HyperlinkedModelSerializer):
                 kwargs = {slug_field: field_dict[slug_field]}
                 sub_inst = field_model.objects.get(**kwargs)
             if sub_inst is None:
-                if create:
-                    sub_inst = self.internal_create(field_dict, field_model)
-                else:
-                    continue
-
+                with transaction.atomic():
+                    try:
+                        sub_inst = self.internal_create(field_dict, field_model)
+                    except:
+                        print('whoops')
+                        validated_data[field_name] = field_dict
             validated_data[field_name] = sub_inst
         return validated_data
 
diff --git a/djangoldp/views.py b/djangoldp/views.py
index a9c87bd0b8fb28c229334883148434087a143414..98aa3f93e72434b8a83e895051c3a23c5eb2af52 100644
--- a/djangoldp/views.py
+++ b/djangoldp/views.py
@@ -1,10 +1,11 @@
 import json
 from django.apps import apps
 from django.conf import settings
-from django.conf.urls import re_path, include
+
+from django.conf.urls import include, re_path
 from django.contrib.auth import get_user_model
 from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist
-from django.urls import get_resolver
+from django.urls.resolvers import get_resolver
 from django.db import IntegrityError, transaction
 from django.http import JsonResponse, Http404
 from django.shortcuts import get_object_or_404
@@ -333,18 +334,7 @@ class LDPViewSetGenerator(ModelViewSet):
 
         # append nested fields to the urls list
         for field in kwargs.get('nested_fields') or cls.nested_fields:
-            # 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(re_path('^' + detail_expr + field + '/', urls_fct(field, **kwargs)))
+            urls.append(re_path('^' + detail_expr + field + '/', cls.nested_urls(field, **kwargs)))
 
         return include(urls)