【发布时间】:2015-07-31 13:53:55
【问题描述】:
在最新版本的 Django (1.8) 中,添加了一些模型字段以利用 Postgres 数据类型。我对HStoreField 感兴趣,并且文档要求设置PG extension 以便在模型中使用新的HStoreFields。
我如何实际使用这个HStoreExtension 类来执行数据库扩展?
【问题讨论】:
标签: python django postgresql
在最新版本的 Django (1.8) 中,添加了一些模型字段以利用 Postgres 数据类型。我对HStoreField 感兴趣,并且文档要求设置PG extension 以便在模型中使用新的HStoreFields。
我如何实际使用这个HStoreExtension 类来执行数据库扩展?
【问题讨论】:
标签: python django postgresql
HStoreField 文档要求您通过添加迁移来设置扩展。
您可以使用命令创建一个空迁移
./manage.py makemigrations yourapp --empty
在创建的迁移文件中,然后可以导入扩展,
django.contrib.postgres.operations import HStoreExtension
并将其添加到操作列表中。
operations = [
HStoreExtension(),
]
创建此迁移后,您可以在模型中使用 HStoreField。
作为示例,请参阅 Django 的 postgres 测试中使用的 this migration file。它设置了两个扩展,HStoreExtension() 和 UnaccentExtension。
【讨论】:
HStoreField。我应该使用./manage.py makemigrations app1 app2 app3 app4 --empty 创建迁移文件,还是命令行提供的应用程序并不重要,因为操作会影响整个数据库?已经感谢您的支持。
makemigrations 采用单个应用程序名称(例如我上面的答案中的yourapp),而不是多个应用程序名称。我怀疑您只需要为一个应用程序创建迁移,而不是您使用HStoreField 的每个应用程序。但是,您必须对此进行测试,因为我还没有尝试过。