什么是使得每个时间数据库与执行syncdb创建来创建自定义pgsql的类型Django应用正确的方式,所有自定义类型创建的任何表(这样的表可以使用这种类型)之前创建?

我也使用Django的演变,但是这不是一个合适的解决方案 - 它执行syncdb后运行。我能想象做这样定义与标准字段类型的模型,然后创建类型,以及修改变阵列类型解决方法,但是这绝对不是漂亮和排序的晦涩......

任何想法?

有帮助吗?

解决方案

我不相信有一种方法在Django做到这一点。正如你可能知道,有一个post_syncdb信号,但对于pre_syncdb没有信号。

所以我认为这里只有两个选择:黑客pre_syncdb信号转换成Django的,或使用如面料的自动化工具

黑客自己pre_syncdb信号,即使是这样做的正确的方式,恐怕也不会是简单的,你必须保持补丁每个新的Django版本。

在另一方面,不仅是像布简单的自动化工具,但它给您的项目提供了其它好处。

作为一个实例,我的Fabfile的一部分是这样的:

def createdb():
    "Create a clean database"
    run('createdb --encoding=UNICODE $(db_name) -O $(db_owner) -U $(db_owner)')
    run('python manage.py syncdb --noinput')

添加这样的事情就在执行syncdb前:

run('psql -U $(db_owner) $(db_name) < app/sql/custom_types.sql')

和你要善于通过只输入去:

$ fab createdb

或:

$ fab cluster createdb

要在您叫cluster环境中列出的所有计算机上运行的命令。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top