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

时间:2016-10-19 15:04:22

标签: python mysql django database django-south

我已经在Django应用程序上工作了一段时间,并且遇到了动态模型和数据库表生成的需求。我进行了广泛的搜索,似乎Django API不包含此功能。根据我收集的内容,South具有执行此操作的功能(即south.db.create_table)。但是,根据我从南方发行说明中收集到的内容,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的解决方法?如果不是,没有人对如何在没有南方的情况下实现此功能有任何想法?我试图考虑替代方法(而不是动态生成表),但考虑到我的项目范围,这似乎可以提供最简洁和最简洁的结果。

谢谢!

1 个答案:

答案 0 :(得分:2)

South与最近的Django版本不兼容的原因是它在Django 1.7中一直是rolled into Django,名称为“migrations”。如果您正在寻找类似的功能,起点将是documentation on migrations。特别是您可能对RunSQL上的部分感兴趣。

如果您希望避开迁移模块,还可以perform raw SQL queries