title: Migrations in mongoengine: InvalidId
body: <p>I am working with mongoengine and trying to do a simple migration.  I have a field which I would like to migrate from being a StringField to a ReferenceField to another Object.  I planned on doing the migration by hand, first constructing the new object based on the string that comes from the old StringField and then setting it explicitly.</p>
  
  <p>The problem is I cannot even access one of the top level documents anymore once I changed the field type.  Is it required to create a "dummy" field in the my document's class code as a placeholder for the new field?  This seems kludgy to me so I assume there is a better way?</p>
  
  <p>Here is the error, which is because the field coming out of the DB (StringField) is not consistent with a reference field.</p>
  
  <pre><code>/usr/lib/python2.7/site-packages/mongoengine/queryset/base.pyc in __getitem__(self, key)
      149                 return queryset._get_as_pymongo(queryset._cursor.next())
      150             return queryset._document._from_son(queryset._cursor[key],
  --&gt; 151                                                 _auto_dereference=self._auto_dereference)
      152         raise AttributeError
      153 
  
  /usr/lib/python2.7/site-packages/mongoengine/base/document.pyc in _from_son(cls, son, _auto_dereference)
      568                 try:
      569                     data[field_name] = (value if value is None
  --&gt; 570                                         else field.to_python(value))
      571                     if field_name != field.db_field:
      572                         del data[field.db_field]
  
  /usr/lib/python2.7/site-packages/mongoengine/fields.pyc in to_python(self, value)
      935            not isinstance(value, (DBRef, Document, EmbeddedDocument))):
      936             collection = self.document_type._get_collection_name()
  --&gt; 937             value = DBRef(collection, self.document_type.id.to_python(value))
      938         return value
      939 
  
  /usr/lib/python2.7/site-packages/mongoengine/base/fields.pyc in to_python(self, value)
      390     def to_python(self, value):
      391         if not isinstance(value, ObjectId):
  --&gt; 392             value = ObjectId(value)
      393         return value
      394 
  
  /usr/lib/python2.7/site-packages/bson/objectid.pyc in __init__(self, oid)
       88             self.__generate()
       89         else:
  ---&gt; 90             self.__validate(oid)
       91 
       92     @classmethod
  
  /usr/lib/python2.7/site-packages/bson/objectid.pyc in __validate(self, oid)
      192                     raise InvalidId("%s is not a valid ObjectId" % oid)
      193             else:
  --&gt; 194                 raise InvalidId("%s is not a valid ObjectId" % oid)
      195         else:
      196             raise TypeError("id must be an instance of (%s, %s, ObjectId), "
  
  InvalidId: Was Dirty: a2111fe89383bb562738b81c2b63fe78e877ed32 is not a valid ObjectId
  </code></pre>