正确的方法来创建Django的自定义pgSQL的类型
-
20-08-2019 - |
题
什么是使得每个时间数据库与执行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
环境中列出的所有计算机上运行的命令。
不隶属于 StackOverflow