Django

Code

Changeset 550

Show
Ignore:
Timestamp:
08/25/05 23:06:18 (3 years ago)
Author:
adrian
Message:

Changed django-admin.py inspectdb to output new-style model syntax

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/core/management.py

    r549 r550  
    456456    for table_name in db.get_table_list(cursor): 
    457457        yield 'class %s(meta.Model):' % table2model(table_name) 
    458         yield '    db_table = %r' % table_name 
    459         yield '    fields = (' 
    460458        try: 
    461459            relations = db.get_relations(cursor, table_name) 
     
    464462        cursor.execute("SELECT * FROM %s LIMIT 1" % table_name) 
    465463        for i, row in enumerate(cursor.description): 
     464            column_name = row[0] 
    466465            if relations.has_key(i): 
    467466                rel = relations[i] 
    468467                rel_to = rel[1] == table_name and "'self'" or table2model(rel[1]) 
    469                 field_desc = 'meta.ForeignKey(%s, name=%r' % (rel_to, row[0]) 
     468                if column_name.endswith('_id'): 
     469                    field_desc = '%s = meta.ForeignKey(%s' % (column_name[:-3], rel_to) 
     470                else: 
     471                    field_desc = '%s = meta.ForeignKey(%s, db_column=%r' % (column_name, rel_to, column_name) 
    470472            else: 
    471473                try: 
     
    473475                except KeyError: 
    474476                    field_type = 'TextField' 
    475                     yield "        # The model-creator script used TextField by default, because" 
    476                     yield "        # it couldn't recognize your field type." 
    477                 field_desc = 'meta.%s(%r' % (field_type, row[0]
     477                    yield "    # The model-creator script used TextField by default, because" 
     478                    yield "    # it couldn't recognize your field type." 
     479                field_desc = '%s = meta.%s(' % (column_name, field_type
    478480                if field_type == 'CharField': 
    479                     field_desc += ', maxlength=%s' % (row[3]) 
    480             yield '        %s),' % field_desc 
    481         yield '    )' 
     481                    field_desc += 'maxlength=%s' % (row[3]) 
     482            yield '    %s)' % field_desc 
     483        yield '    class META:' 
     484        yield '        db_table = %r' % table_name 
    482485        yield '' 
    483486inspectdb.help_doc = "Introspects the database tables in the given database and outputs a Django model module."