Django South和Constraint IDs

Django South和Constraint IDs,django,postgresql,django-south,database-migration,Django,Postgresql,Django South,Database Migration,在创建唯一和外键约束时,South如何为约束名称提供ID,如: CONSTRAINT report_type_id_refs_id_435782e833badd2f FOREIGN KEY (report_type_id) REFERENCES reports_reporttype (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION DEFERRABLE INITIALLY DEFERRED, 我一直遇到的问题是迁移试图删除约束,

在创建唯一和外键约束时,South如何为约束名称提供ID,如:

CONSTRAINT report_type_id_refs_id_435782e833badd2f FOREIGN KEY (report_type_id)
REFERENCES reports_reporttype (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION DEFERRABLE INITIALLY DEFERRED,
我一直遇到的问题是迁移试图删除约束,但数据库中的实际约束是不同的

这个散列是由South自己生成的,还是来自数据库? 这个散列是基于什么的? 使用PostgreSQL作为数据库

更新:我注意到不匹配不是完全随机的。以下是数据库的功能:

CONSTRAINT user_id_refs_id_f15cc3cd FOREIGN KEY (user_id)
REFERENCES brandnew4.auth_user (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION DEFERRABLE INITIALLY DEFERRED
这是South试图删除的一个矛盾:

django.db.utils.DatabaseError: constraint "user_id_refs_id_7e2ccc6bf15cc3cd" of relation "operatorInterface_ospreyuserprofile" does not exist
如果仔细查看这些约束名称:

        user_id_refs_id_f15cc3cd
user_id_refs_id_7e2ccc6bf15cc3cd
db中的8位十六进制键与South正在查找的16位十六进制键的最后8位相同

发生什么事了

更新2: 我跟踪了哈希的生成位置:

为什么South在一次迁移中使用64位版本的哈希,而在另一次迁移中使用32位版本的哈希

South版本0.8.4-我在一个全新的空白数据库上运行了这个。
Django版本1.4.2的问题是:South总是在公共模式中查找约束名称,并且迁移应用于公共模式以外的模式。因此,错误匹配