虚拟领域的南迁移

时间:2011-10-18 04:22:25

标签: python django django-south

我们有一个虚拟Python模块(fields.py),带有自定义Django字段,可根据配置的数据库加载实际实现:

if settings.DATABASES['default']['ENGINE'].find('postgresql') != -1:
  from fields_postgresql import *
else:
  from fields_dummy import *

原因是我们正在使用PostgreSQL ip4r扩展,它允许与包含IP值的字段进行良好(和快速)的工作。但是我们也有其他数据库的虚拟实现(在Python代码中),因此也可以在SQLite中完成开发。因此,如果您正在使用PostgreSQL,那些字段将使用ip4r索引备份字段,如果您使用其他数据库系统,则这些字段是常规字段。

问题是如何在这些领域使用南迁移。问题是add_introspection_rules发现了fields_postgresqlfields_dummy,因此这会泄漏到迁移。如果要在使用PostgreSQL的安装上应用使用SQLite进行的迁移,则以后会出现此问题。

如何才能说服南方这只是fields模块,并且运行哪些具体的实施迁移并不重要。

1 个答案:

答案 0 :(得分:1)

删除对SQLite的支持

你是对的,如果你没有在手机上运行你的开发环境,只是为了不安装Postgre维护你自己的南方迁移脚本可能不值得麻烦。

Postgre安装与维护自定义迁移代码是一次性操作,而不是连续且可能耗时的过程(因为您可能需要修改自定义迁移代码才能与较新的South版本同步)。