summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2008-08-16 05:03:40 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2008-08-16 05:03:40 +0000
commit77c949289e8cc93df47997c44b8710217996cf63 (patch)
tree29cf96b980498dad028babe9fce71c6f6d3937fa
parenteab705f6234e035b676fb02a70a9a3812d23351d (diff)
Fixed #7285: Improved inspectdb handling of dashes in table and field names. Thanks to redalastor@gmail.com for the report and Justin Bronn for the first part of a fix.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8404 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/core/management/commands/inspectdb.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/django/core/management/commands/inspectdb.py b/django/core/management/commands/inspectdb.py
index d0c298366a..6e84ed64de 100644
--- a/django/core/management/commands/inspectdb.py
+++ b/django/core/management/commands/inspectdb.py
@@ -16,7 +16,7 @@ class Command(NoArgsCommand):
from django.db import connection
import keyword
- table2model = lambda table_name: table_name.title().replace('_', '').replace(' ', '')
+ table2model = lambda table_name: table_name.title().replace('_', '').replace(' ', '').replace('-', '')
cursor = connection.cursor()
yield "# This is an auto-generated Django model module."
@@ -45,12 +45,19 @@ class Command(NoArgsCommand):
comment_notes = [] # Holds Field notes, to be displayed in a Python comment.
extra_params = {} # Holds Field parameters such as 'db_column'.
- if ' ' in att_name:
+ # If we need to do field name modifiations,
+ # remember the original field name
+ if ' ' in att_name or '-' in att_name or keyword.iskeyword(att_name):
extra_params['db_column'] = att_name
- att_name = att_name.replace(' ', '')
+
+ # Now modify the field name to make it python compatible.
+ if ' ' in att_name:
+ att_name = att_name.replace(' ', '_')
comment_notes.append('Field renamed to remove spaces.')
+ if '-' in att_name:
+ att_name = att_name.replace('-', '_')
+ comment_notes.append('Field renamed to remove dashes.')
if keyword.iskeyword(att_name):
- extra_params['db_column'] = att_name
att_name += '_field'
comment_notes.append('Field renamed because it was a Python reserved word.')