=== modified file 'db/generic.py'
--- db/generic.py	2008-11-23 22:42:40 +0000
+++ db/generic.py	2008-12-03 09:14:29 +0000
@@ -17,6 +17,7 @@
         self.debug = False
         self.deferred_sql = []
         self.dry_run = False
+        self.pending_create_signals = []
 
     def execute(self, sql, params=[]):
         """
@@ -400,6 +401,15 @@
     
     
     def send_create_signal(self, app_label, model_names):
+        self.pending_create_signals.append((app_label, model_names))
+
+
+    def send_pending_create_signals(self):
+        for (app_label, model_names) in self.pending_create_signals:
+            self.really_send_create_signal(app_label, model_names)
+        self.pending_create_signals = []
+
+    def really_send_create_signal(self, app_label, model_names):
         """
         Sends a post_syncdb signal for the model specified.
         

=== modified file 'migration.py'
--- migration.py	2008-11-23 22:42:40 +0000
+++ migration.py	2008-12-03 09:14:29 +0000
@@ -449,6 +449,8 @@
         for mapp, mname in forwards:
             if (mapp, mname) not in current_migrations:
                 run_forwards(mapp, [mname], fake=fake, db_dry_run=db_dry_run, silent=silent)
+
+        db.send_pending_create_signals()
         # Now load initial data, only if we're really doing things and ended up at current
         if not fake and not db_dry_run and load_inital_data and target_name == migrations[-1]:
             print " - Loading initial data for %s." % app_name

