Django:以编程/动态方式创建数据库表

Django: create database tables programmatically/dynamically

提问人:Veronica Andric 提问时间:10/19/2016 更新时间:10/19/2016 访问量:2246

问:

我开发 Django 应用程序已经有一段时间了,并且遇到了动态模型和数据库表生成的需求。我已经搜索了很远很广,似乎 Django API 不包含这个函数。从我收集到的信息来看,South有一个功能可以做到这一点(即south.db.create_table)。但是,从我从 South 的发行说明中收集到的信息来看,South 与 Django 1.7 及更高版本不兼容,我的项目是使用 Django 1.9 构建的。

我已经编写了一个脚本,该脚本使用以下方法创建要迁移到数据库的架构的模型实例:

attrs = {'__module__':model_location, 'Meta':Meta}
model = type(table_name, (models.Model,), attrs)

P.S. 请注意,这并不是上述脚本的全部内容。如果您认为这对我提供有用,我可以根据要求添加它。

有没有人找到将 South 1.0.2 与 Django 1.9 一起使用的解决方法?如果没有,有没有人对我如何在没有 South 的情况下实现此功能有任何想法?我试图想出替代方法(而不是动态生成表格),但考虑到我的项目范围,这似乎确实会提供最简洁、最干净的结果。

谢谢!

python mysql django 数据库 django-south

评论


答:

2赞 StvnW 10/19/2016 #1

South 与最近的 Django 版本不兼容的原因是,从 Django 1.7 开始,它已被引入 Django,名称为“migrations”。如果您正在寻找类似的功能,则从有关迁移的文档开始。特别是,您可能对有关 RunSQL 的部分感兴趣。

如果您希望避免迁移模块,您还可以执行原始 SQL 查询

评论

0赞 Veronica Andric 10/20/2016
感谢您的快速回复!我正在研究两者。但是,出于安全原因,我希望避免原始 SQL 查询。