Skip to content

Commit

Permalink
Fixed django#3779 -- Resolved problem with order of creation of m2m t…
Browse files Browse the repository at this point in the history
…ables during syncdb. Well spotted, Ben Slavin, and thanks for the very helpful test case.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@4780 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
freakboy3742 committed Mar 23, 2007
1 parent 6a7a155 commit e21a4c8
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions django/core/management.py
Expand Up @@ -280,7 +280,7 @@ def get_sql_delete(app):
from django.db import backend, connection, models, get_introspection_module
introspection = get_introspection_module()

# This should work even if a connecton isn't available
# This should work even if a connection isn't available
try:
cursor = connection.cursor()
except:
Expand Down Expand Up @@ -512,6 +512,7 @@ def syncdb(verbosity=1, interactive=True):
created_models = set()
pending_references = {}

# Create the tables for each model
for app in models.get_apps():
app_name = app.__name__.split('.')[-2]
model_list = models.get_models(app)
Expand All @@ -533,6 +534,11 @@ def syncdb(verbosity=1, interactive=True):
cursor.execute(statement)
table_list.append(model._meta.db_table)

# Create the m2m tables. This must be done after all tables have been created
# to ensure that all referred tables will exist.
for app in models.get_apps():
app_name = app.__name__.split('.')[-2]
model_list = models.get_models(app)
for model in model_list:
if model in created_models:
sql = _get_many_to_many_sql_for_model(model)
Expand All @@ -542,7 +548,7 @@ def syncdb(verbosity=1, interactive=True):
for statement in sql:
cursor.execute(statement)

transaction.commit_unless_managed()
transaction.commit_unless_managed()

# Send the post_syncdb signal, so individual apps can do whatever they need
# to do at this point.
Expand Down

0 comments on commit e21a4c8

Please sign in to comment.