Django:创建数据库表 programmatically/dynamically
Django: create database tables programmatically/dynamically
我开发 Django 应用已有一段时间了,遇到了动态模型和数据库 table 生成的需求。我进行了广泛的搜索,似乎 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 的情况下实现此功能吗?我曾尝试考虑替代方法(而不是动态生成 tables),但考虑到我的项目范围,这似乎真的会提供最简洁明了的结果。
谢谢!
South 与最近的 Django 版本不兼容的原因是 rolled into Django as of Django 1.7, under the name "migrations". If you are looking for similar functionality the starting point would be the documentation on migrations. In particular you may be interested in the section on RunSQL。
如果你想避开迁移模块,你也可以perform raw SQL queries。
我开发 Django 应用已有一段时间了,遇到了动态模型和数据库 table 生成的需求。我进行了广泛的搜索,似乎 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 的情况下实现此功能吗?我曾尝试考虑替代方法(而不是动态生成 tables),但考虑到我的项目范围,这似乎真的会提供最简洁明了的结果。
谢谢!
South 与最近的 Django 版本不兼容的原因是 rolled into Django as of Django 1.7, under the name "migrations". If you are looking for similar functionality the starting point would be the documentation on migrations. In particular you may be interested in the section on RunSQL。
如果你想避开迁移模块,你也可以perform raw SQL queries。