summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorJacek Bzdak <jbzdak@gmail.com>2015-11-06 17:29:23 +0100
committerTim Graham <timograham@gmail.com>2015-11-25 13:17:24 -0500
commit834ad41472e240e951230e52aa698ae7a3d52eb9 (patch)
tree4d07a0700490acca794441aeddc3b4a15abe5f22 /django
parent108038f2b44d8b30fccc419598a8add8cf3f8240 (diff)
[1.8.x] Fixed #25274 --- Made inspectdb handle renamed fields in unique_together.
Backport of 2cb50f935aa70e91dd6c2f253becd636a2eb6fb7 from master
Diffstat (limited to 'django')
-rw-r--r--django/core/management/commands/inspectdb.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/django/core/management/commands/inspectdb.py b/django/core/management/commands/inspectdb.py
index 60800df314..085cf7ce24 100644
--- a/django/core/management/commands/inspectdb.py
+++ b/django/core/management/commands/inspectdb.py
@@ -73,6 +73,7 @@ class Command(BaseCommand):
except NotImplementedError:
constraints = {}
used_column_names = [] # Holds column names used in the table so far
+ column_to_field_name = {} # Maps column names to names of model fields
for row in connection.introspection.get_table_description(cursor, table_name):
comment_notes = [] # Holds Field notes, to be displayed in a Python comment.
extra_params = OrderedDict() # Holds Field parameters such as 'db_column'.
@@ -85,6 +86,7 @@ class Command(BaseCommand):
comment_notes.extend(notes)
used_column_names.append(att_name)
+ column_to_field_name[column_name] = att_name
# Add primary_key and unique, if necessary.
if column_name in indexes:
@@ -141,7 +143,7 @@ class Command(BaseCommand):
if comment_notes:
field_desc += ' # ' + ' '.join(comment_notes)
yield ' %s' % field_desc
- for meta_line in self.get_meta(table_name, constraints):
+ for meta_line in self.get_meta(table_name, constraints, column_to_field_name):
yield meta_line
def normalize_col_name(self, col_name, used_column_names, is_relation):
@@ -238,7 +240,7 @@ class Command(BaseCommand):
return field_type, field_params, field_notes
- def get_meta(self, table_name, constraints):
+ def get_meta(self, table_name, constraints, column_to_field_name):
"""
Return a sequence comprising the lines of code necessary
to construct the inner Meta class for the model corresponding
@@ -251,7 +253,7 @@ class Command(BaseCommand):
if len(columns) > 1:
# we do not want to include the u"" or u'' prefix
# so we build the string rather than interpolate the tuple
- tup = '(' + ', '.join("'%s'" % c for c in columns) + ')'
+ tup = '(' + ', '.join("'%s'" % column_to_field_name[c] for c in columns) + ')'
unique_together.append(tup)
meta = ["",
" class Meta:",