首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在django中创建自定义pgsql类型的正确方法

在django中创建自定义pgsql类型的正确方法
EN

Stack Overflow用户
提问于 2009-06-29 04:17:49
回答 1查看 352关注 0票数 1

为django应用程序创建自定义pgsql类型的正确方法是什么,以便每次使用syncdb创建数据库时,在创建任何表之前创建所有自定义类型(以便表可以使用此类型)?

我也使用了django-evolution,但这不是一个合适的解决方案-它在syncdb之后运行。我可以想象这样的变通方法,比如使用标准字段类型定义模型,然后在演进中创建类型和更改列类型,但这肯定不是很好,而且有点晦涩……

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-29 06:50:01

我不相信在Django有办法做到这一点。正如您可能知道的,有一个post_syncdb信号,但没有pre_syncdb的信号。

所以我认为只有两个选择:在Django中使用pre_syncdb信号或者使用像Fabric这样的自动化工具。

破解你自己的pre_syncdb信号,即使这是正确的方法,可能也不会很简单,你必须在每个新的Django版本中维护补丁。

另一方面,像Fabric这样的自动化工具不仅简单,而且还为您的项目提供了其他好处。

例如,我的Fabfile的一部分如下所示:

代码语言:javascript
复制
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之前添加如下内容:

代码语言:javascript
复制
run('psql -U $(db_owner) $(db_name) < app/sql/custom_types.sql')

您只需输入以下命令即可:

代码语言:javascript
复制
$ fab createdb

或者:

代码语言:javascript
复制
$ fab cluster createdb

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1056535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档