title: Django custom field column not created
body: <p>I tryed to define two custom Fields but Django does not creates the Database columns.</p>
  
  <pre><code>import struct
  
  from django.db.models import BinaryField,Field
  from django.core import validators
  from django.utils.translation import ugettext_lazy as _
  
  
  class ArrayField(BinaryField):
      description = _('Array stored as binary')
  
      def __init__(self, *args, **kwargs):
          super(ArrayField, 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 "ArrayField"
  
      def get_default(self):
          default = super(ArrayField, self).get_default()
          if default == '':
              arr = []
              return arr
  
      def get_db_prep_value(self, value, connection, prepared=False):
          value = super(ArrayField, self
          ).get_db_prep_value(value, connection, prepared)
          arr = []
          if value is not None and len(value) &gt; 4:
              pos = 4
              while True:
                  length = struct.unpack("i", value[pos:pos + 4])
                  pos += 4
                  arr.append(value[pos:pos + length])
                  pos += length
                  if pos == len(value):
                      break
          return arr
  
      def pre_save(self, model_instance, add):
          value = getattr(model_instance, self.attname)
          if value is not None and len(value) &gt; 3:
              byte = value[0:4]
              for val in value:
                  byte += struct.pack("i", len(val))
                  byte += val
              return byte
          return b''
  
      def get_data_type(self, value):
          if value is None or len(value) &lt; 4:
              return None
          return struct.unpack("i", value)
  
  
  class StringArrayField(ArrayField):
      description = _('String array stored as binary')
  
      def __init__(self, *args, **kwargs):
          super(StringArrayField, self).__init__(*args, **kwargs)
          kwargs['editable'] = False
          if 'encoding' in kwargs:
              self.encoding = kwargs['encoding']
          else:
              self.encoding = 'utf8'
  
      def get_db_prep_value(self, value, connection, prepared=False):
          arr = super(StringArrayField, self).get_db_prep_value(value, connection, prepared)
          if arr is not None and len(arr) &gt; 0:
              for i in range(0, len(arr) - 1):
                  arr[i] = bytes(arr[i]).decode(self.encoding)
  
      def get_internal_type(self):
          return "StringArrayField"
  
      def get_data_type(self, value):
          return str
  </code></pre>
  
  <p>Test model:</p>
  
  <pre><code>from django.db import models
  
  
  class Test(models.Model):
      arrs = fields.ArrayField()
      strs = fields.StringArrayField()
      name = models.CharField(max_length=16) #Ensure that somethink happens
  </code></pre>
  
  <p>After sync db:</p>
  
  <pre><code>SHOW FIELDS FROM liste_test;
  +-------+-------------+------+-----+---------+----------------+
  | Field | Type        | Null | Key | Default | Extra          |
  +-------+-------------+------+-----+---------+----------------+
  | id    | int(11)     | NO   | PRI | NULL    | auto_increment |
  | name  | varchar(16) | NO   |     | NULL    |                |
  +-------+-------------+------+-----+---------+----------------+
  </code></pre>
  
  <p>My fields are missing, I think its only a small mistake but I can't find it. I droped the table a few times and synced again but my field are still missing has anyone a idea what is the mistake ?</p>