Django

Code

Changeset 713

Show
Ignore:
Timestamp:
09/28/05 18:08:47 (3 years ago)
Author:
adrian
Message:

Fixed #553 -- Added django.core.meta.fields.Field.get_internal_type() hook, for creating custom meta.Field subclasses. Thanks, wojtek3

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/core/db/backends/mysql.py

    r694 r713  
    134134    'URLField':          'varchar(200)', 
    135135    'USStateField':      'varchar(2)', 
    136     'XMLField':          'longtext', 
    137136} 
    138137 
  • django/trunk/django/core/db/backends/postgresql.py

    r647 r713  
    171171    'URLField':          'varchar(200)', 
    172172    'USStateField':      'varchar(2)', 
    173     'XMLField':          'text', 
    174173} 
    175174 
  • django/trunk/django/core/db/backends/sqlite3.py

    r615 r713  
    171171    'URLField':                     'varchar(200)', 
    172172    'USStateField':                 'varchar(2)', 
    173     'XMLField':                     'text', 
    174173} 
    175174 
  • django/trunk/django/core/management.py

    r695 r713  
    4848# IntegerField, not an AutoField. Otherwise, the foreign key should be the same 
    4949# type of field as the field to which it points. 
    50 get_rel_data_type = lambda f: (f.__class__.__name__ == 'AutoField') and 'IntegerField' or f.__class__.__name__ 
     50get_rel_data_type = lambda f: (f.get_internal_type() == 'AutoField') and 'IntegerField' or f.get_internal_type() 
    5151 
    5252def get_sql_create(mod): 
     
    6363            else: 
    6464                rel_field = f 
    65                 data_type = f.__class__.__name__ 
     65                data_type = f.get_internal_type() 
    6666            col_type = db.DATA_TYPES[data_type] 
    6767            if col_type is not None: 
     
    635635    index_output = [] 
    636636    for f in fields: 
    637         field_output = [f.column, db.DATA_TYPES[f.__class__.__name__] % f.__dict__] 
     637        field_output = [f.column, db.DATA_TYPES[f.get_internal_type()] % f.__dict__] 
    638638        field_output.append("%sNULL" % (not f.null and "NOT " or "")) 
    639639        if f.unique: 
  • django/trunk/django/core/meta/fields.py

    r643 r713  
    114114    def get_cache_name(self): 
    115115        return '_%s_cache' % self.name 
     116 
     117    def get_internal_type(self): 
     118        return self.__class__.__name__ 
    116119 
    117120    def pre_save(self, value, add): 
     
    553556        return [formfields.USStateField] 
    554557 
    555 class XMLField(Field): 
     558class XMLField(TextField): 
    556559    def __init__(self, verbose_name=None, name=None, schema_path=None, **kwargs): 
    557560        self.schema_path = schema_path 
    558561        Field.__init__(self, verbose_name, name, **kwargs) 
     562 
     563    def get_internal_type(self): 
     564        return "TextField" 
    559565 
    560566    def get_manipulator_field_objs(self):