我开发 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)
附:请注意,这不是上述脚本的全部。如果您认为这对我有用,我可以根据要求添加它。
有人找到了将 South 1.0.2 与 Django 1.9 一起使用的解决方法吗?如果没有,有人知道我如何在没有南的情况下实现此功能吗?我试图考虑替代方法(而不是动态生成表),但这看起来确实会在我的项目范围内提供最简洁和干净的结果。
谢谢!
最佳答案
South 与最新 Django 版本不兼容的原因是它已 rolled into Django从 Django 1.7 开始,名称为“migrations”。如果您正在寻找类似的功能,起点将是 documentation on migrations 。您可能特别对 RunSQL 部分感兴趣。 .
如果您希望避免迁移模块,您也可以 perform raw SQL queries .
关于python - Django:以编程方式/动态创建数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40135179/