Commit 77c94928 authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

Fixed #7285: Improved inspectdb handling of dashes in table and field names....

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
parent eab705f6
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -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.')