Index: django/db/models/signals.py
===================================================================
--- django/db/models/signals.py	(revision 6799)
+++ django/db/models/signals.py	(working copy)
@@ -9,4 +9,5 @@
 pre_delete = object()
 post_delete = object()
 
+pre_syncdb = object()
 post_syncdb = object()
Index: django/core/management/commands/syncdb.py
===================================================================
--- django/core/management/commands/syncdb.py	(revision 6799)
+++ django/core/management/commands/syncdb.py	(working copy)
@@ -21,7 +21,7 @@
     def handle_noargs(self, **options):
         from django.db import connection, transaction, models
         from django.conf import settings
-        from django.core.management.sql import table_list, installed_models, sql_model_create, sql_for_pending_references, many_to_many_sql_for_model, custom_sql_for_model, sql_indexes_for_model, emit_post_sync_signal
+        from django.core.management.sql import table_list, installed_models, sql_model_create, sql_for_pending_references, many_to_many_sql_for_model, custom_sql_for_model, sql_indexes_for_model, emit_post_sync_signal, emit_pre_sync_signal
 
         verbosity = int(options.get('verbosity', 1))
         interactive = options.get('interactive')
@@ -36,6 +36,7 @@
             except ImportError:
                 pass
 
+        emit_pre_sync_signal(verbosity, interactive)
         cursor = connection.cursor()
 
         if connection.features.uses_case_insensitive_names:
Index: django/core/management/sql.py
===================================================================
--- django/core/management/sql.py	(revision 6799)
+++ django/core/management/sql.py	(working copy)
@@ -473,6 +473,17 @@
             )
     return output
 
+def emit_pre_sync_signal(verbosity, interactive):
+    from django.db import models
+    from django.dispatch import dispatcher
+    # Emit the pre_sync signal for every application.
+    for app in models.get_apps():
+        app_name = app.__name__.split('.')[-2]
+        if verbosity >= 2:
+            print "Running pre-sync handlers for application", app_name
+        dispatcher.send(signal=models.signals.pre_syncdb, sender=app,
+            app=app, verbosity=verbosity, interactive=interactive)
+
 def emit_post_sync_signal(created_models, verbosity, interactive):
     from django.db import models
     from django.dispatch import dispatcher
