Python 如何以与South兼容的方式使用UUIDField?

Python 如何以与South兼容的方式使用UUIDField?,python,django,django-south,django-extensions,Python,Django,Django South,Django Extensions,通常,我可以解决突然出现的数据库迁移问题,但这一点让我感到困惑 我创建了一个新模型,其中django extensions的UUIDField作为主键 # BaseModelNamed is just a mixin which provides some basic fields # e.g. name, description, slug, created, modified class UUIDObject(BaseModelNamed): uuid = UUIDField(pri

通常,我可以解决突然出现的数据库迁移问题,但这一点让我感到困惑

我创建了一个新模型,其中django extensions的UUIDField作为主键

# BaseModelNamed is just a mixin which provides some basic fields
# e.g. name, description, slug, created, modified
class UUIDObject(BaseModelNamed):
    uuid = UUIDField(primary_key=True)
我还有另一个模型是指这个模型的:

class ParentModel(BaseModelNamed):
    default_uuidobject = models.OneToOneField(UUIDObject,
        related_name='parent_model', blank=True, null=True)
    uuidobject_collection = models.ManyToManyField(UUIDObject,
        related_name='parent_models', blank=True, null=True)
…和自动生成的迁移:

def forwards(self, orm):
    # Adding model 'UUIDObject'
    db.create_table('app_uuidobject', (
        ('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, null=True, blank=True)),
        ('last_modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, null=True, blank=True)),
        ('name', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
        ('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
        ('slug', self.gf('django.db.models.fields.SlugField')(max_length=50, null=True, blank=True)),
        ('uuid', self.gf('django.db.models.fields.CharField')(max_length=36, primary_key=True)),
    ))
    db.send_create_signal('app', ['UUIDObject'])

    # Adding field 'ParentModel.default_uuidobject'
    db.add_column('app_parentmodel', 'default_uuidobject',
                  self.gf('django.db.models.fields.related.OneToOneField')(blank=True, related_name='parent_model', unique=True, null=True, to=orm['app.UUIDObject']),
                  keep_default=False)
但是,当我尝试实际执行迁移时,我不断收到一个迁移错误:

django.db.utils.DatabaseError: (1005, "Can't create table 'db.#sql-819_2ed' (errno: 150)")
根据我所了解的情况,运行SHOW ENGINE INNODB STATUS可以更深入地了解问题,事实上,它揭示了这一点:

------------ 最新外键错误 ------------ 130424 20:34:02表ebdb/sql-819\u 2ed的外键约束中存在错误: 外键'default\u uuidobject\u id'引用'app\u uuidobject``uuid`: 在引用的表中找不到 引用的列显示为第一列或列类型 表中的约束与引用的表中的约束不匹配。 如何以与South兼容的方式使用UUIDField

或者,如何解决此迁移冲突

目前,我正在使用以下软件包:

django扩展==0.9 南==0.7.6 Django==1.4.1 编辑: 我尝试过添加db_索引并在迁移中创建索引,但两种方法都没有成功:

... 'uuid',self.gf'django.db.models.fields.CharField'max_length=36,primary_key=True,db_index=True, db.create_index'app_uuidobject',['uuid',unique=True