diff --git a/djangoldp/apps.py b/djangoldp/apps.py
index 8811cf84d104b281ac712b9734084d654fc50e1e..8d6e45690a2d9987676729e2b5ad143bfb374732 100644
--- a/djangoldp/apps.py
+++ b/djangoldp/apps.py
@@ -1,6 +1,5 @@
 from django.apps import AppConfig
-from django.db import OperationalError
-
+from django.db import OperationalError, connection
 
 class DjangoldpConfig(AppConfig):
     name = 'djangoldp'
@@ -11,7 +10,17 @@ class DjangoldpConfig(AppConfig):
     def create_local_source(self):
         from djangoldp.models import LDPSource, Model
 
-        model_classes = {cls.__name__: cls for cls in Model.__subclasses__()}
+        model_classes = {}
+        db_tables = []
+
+        for cls in Model.__subclasses__():
+            model_classes[cls.__name__] = cls
+            db_tables.append(LDPSource.get_meta(cls, "db_table"))
+
+        # Check that all model's table already exists
+        existing_tables = connection.introspection.table_names()
+        if not all(db_table in existing_tables for db_table in db_tables):
+            return
 
         for class_name in model_classes:
             model_class = model_classes[class_name]
@@ -19,7 +28,7 @@ class DjangoldpConfig(AppConfig):
                 continue
             path = model_class.get_container_path().strip("/")
             try:
-                existing_source = LDPSource.objects.get(federation=path)
+                LDPSource.objects.get(federation=path)
             except LDPSource.DoesNotExist:
                 LDPSource.objects.create(federation=path, urlid=Model.absolute_url(model_class))
             except OperationalError: