Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

magic-removal: Fixed #1082 -- Added a 'supports_constraints' variable…

… for each database backend, and set SQLite's to False

git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@1757 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 2d4acdc2784c7a6e65294b04a0e2fb3762947735 1 parent aa9fa34
@adrianholovaty adrianholovaty authored
View
25 django/core/management.py
@@ -117,18 +117,19 @@ def get_sql_create(app):
# Take care of any ALTER TABLE statements to add constraints
# after the fact.
- if klass in pending_references:
- for rel_class, f in pending_references[klass]:
- rel_opts = rel_class._meta
- r_table = rel_opts.db_table
- r_col = f.column
- table = opts.db_table
- col = opts.get_field(f.rel.field_name).column
- final_output.append('ALTER TABLE %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s);' % \
- (backend.quote_name(r_table),
- backend.quote_name("%s_referencing_%s_%s" % (r_col, table, col)),
- backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col)))
- del pending_references[klass]
+ if backend.supports_constraints:
+ if klass in pending_references:
+ for rel_class, f in pending_references[klass]:
+ rel_opts = rel_class._meta
+ r_table = rel_opts.db_table
+ r_col = f.column
+ table = opts.db_table
+ col = opts.get_field(f.rel.field_name).column
+ final_output.append('ALTER TABLE %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s);' % \
+ (backend.quote_name(r_table),
+ backend.quote_name("%s_referencing_%s_%s" % (r_col, table, col)),
+ backend.quote_name(r_col), backend.quote_name(table), backend.quote_name(col)))
+ del pending_references[klass]
# Keep track of the fact that we've created the table for this model.
models_output.add(klass)
View
2  django/db/backends/ado_mssql/base.py
@@ -76,6 +76,8 @@ def close(self):
self.connection.close()
self.connection = None
+supports_constraints = True
+
def quote_name(name):
if name.startswith('[') and name.endswith(']'):
return name # Quoting once is enough.
View
2  django/db/backends/mysql/base.py
@@ -83,6 +83,8 @@ def close(self):
self.connection.close()
self.connection = None
+supports_constraints = True
+
def quote_name(name):
if name.startswith("`") and name.endswith("`"):
return name # Quoting once is enough.
View
2  django/db/backends/postgresql/base.py
@@ -49,6 +49,8 @@ def close(self):
self.connection.close()
self.connection = None
+supports_constraints = True
+
def quote_name(name):
if name.startswith('"') and name.endswith('"'):
return name # Quoting once is enough.
View
2  django/db/backends/sqlite3/base.py
@@ -70,6 +70,8 @@ def convert_query(self, query, num_params):
# XXX this seems too simple to be correct... is this right?
return query % tuple("?" * num_params)
+supports_constraints = False
+
def quote_name(name):
if name.startswith('"') and name.endswith('"'):
return name # Quoting once is enough.
Please sign in to comment.
Something went wrong with that request. Please try again.