Loading django/db/backends/mysql/creation.py +1 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ class DatabaseCreation(BaseDatabaseCreation): # If a column type is set to None, it won't be included in the output. data_types = { 'AutoField': 'integer AUTO_INCREMENT', 'BinaryField': 'longblob', 'BooleanField': 'bool', 'CharField': 'varchar(%(max_length)s)', 'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', Loading django/db/backends/oracle/creation.py +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ class DatabaseCreation(BaseDatabaseCreation): data_types = { 'AutoField': 'NUMBER(11)', 'BinaryField': 'BLOB', 'BooleanField': 'NUMBER(1) CHECK (%(qn_column)s IN (0,1))', 'CharField': 'NVARCHAR2(%(max_length)s)', 'CommaSeparatedIntegerField': 'VARCHAR2(%(max_length)s)', Loading django/db/backends/postgresql_psycopg2/creation.py +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ class DatabaseCreation(BaseDatabaseCreation): # If a column type is set to None, it won't be included in the output. data_types = { 'AutoField': 'serial', 'BinaryField': 'bytea', 'BooleanField': 'boolean', 'CharField': 'varchar(%(max_length)s)', 'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', Loading django/db/backends/sqlite3/creation.py +1 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ class DatabaseCreation(BaseDatabaseCreation): # schema inspection is more useful. data_types = { 'AutoField': 'integer', 'BinaryField': 'BLOB', 'BooleanField': 'bool', 'CharField': 'varchar(%(max_length)s)', 'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', Loading django/db/models/fields/__init__.py +27 −0 Original line number Diff line number Diff line Loading @@ -1291,3 +1291,30 @@ class URLField(CharField): } defaults.update(kwargs) return super(URLField, self).formfield(**defaults) class BinaryField(Field): description = _("Raw binary data") def __init__(self, *args, **kwargs): kwargs['editable'] = False super(BinaryField, self).__init__(*args, **kwargs) if self.max_length is not None: self.validators.append(validators.MaxLengthValidator(self.max_length)) def get_internal_type(self): return "BinaryField" def get_default(self): if self.has_default() and not callable(self.default): return self.default default = super(BinaryField, self).get_default() if default == '': return b'' return default def get_db_prep_value(self, value, connection, prepared=False): value = super(BinaryField, self ).get_db_prep_value(value, connection, prepared) if value is not None: return connection.Database.Binary(value) return value Loading
django/db/backends/mysql/creation.py +1 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ class DatabaseCreation(BaseDatabaseCreation): # If a column type is set to None, it won't be included in the output. data_types = { 'AutoField': 'integer AUTO_INCREMENT', 'BinaryField': 'longblob', 'BooleanField': 'bool', 'CharField': 'varchar(%(max_length)s)', 'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', Loading
django/db/backends/oracle/creation.py +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ class DatabaseCreation(BaseDatabaseCreation): data_types = { 'AutoField': 'NUMBER(11)', 'BinaryField': 'BLOB', 'BooleanField': 'NUMBER(1) CHECK (%(qn_column)s IN (0,1))', 'CharField': 'NVARCHAR2(%(max_length)s)', 'CommaSeparatedIntegerField': 'VARCHAR2(%(max_length)s)', Loading
django/db/backends/postgresql_psycopg2/creation.py +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ class DatabaseCreation(BaseDatabaseCreation): # If a column type is set to None, it won't be included in the output. data_types = { 'AutoField': 'serial', 'BinaryField': 'bytea', 'BooleanField': 'boolean', 'CharField': 'varchar(%(max_length)s)', 'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', Loading
django/db/backends/sqlite3/creation.py +1 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ class DatabaseCreation(BaseDatabaseCreation): # schema inspection is more useful. data_types = { 'AutoField': 'integer', 'BinaryField': 'BLOB', 'BooleanField': 'bool', 'CharField': 'varchar(%(max_length)s)', 'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', Loading
django/db/models/fields/__init__.py +27 −0 Original line number Diff line number Diff line Loading @@ -1291,3 +1291,30 @@ class URLField(CharField): } defaults.update(kwargs) return super(URLField, self).formfield(**defaults) class BinaryField(Field): description = _("Raw binary data") def __init__(self, *args, **kwargs): kwargs['editable'] = False super(BinaryField, self).__init__(*args, **kwargs) if self.max_length is not None: self.validators.append(validators.MaxLengthValidator(self.max_length)) def get_internal_type(self): return "BinaryField" def get_default(self): if self.has_default() and not callable(self.default): return self.default default = super(BinaryField, self).get_default() if default == '': return b'' return default def get_db_prep_value(self, value, connection, prepared=False): value = super(BinaryField, self ).get_db_prep_value(value, connection, prepared) if value is not None: return connection.Database.Binary(value) return value