我有一些数据库在MongoDB中,我想创建动态模型,因为有很多数据库,我不能手动完成。问题:从现有的MongoDB数据库创建Django模型
- 我的models.py应该是什么样子? (是否inspectdb与mongodb数据库或仅基于SQL的dbs一起工作?)
- 由于数据库模型是动态创建的,因此如何编码序列化程序类以返回动态字段?
在此先感谢。
我有一些数据库在MongoDB中,我想创建动态模型,因为有很多数据库,我不能手动完成。问题:从现有的MongoDB数据库创建Django模型
在此先感谢。
Django支持针对传统关系数据库的对象关系映射器。虽然there are a number of mongodb packages for Django,但他们都不支持inspectdb
来构建您的模型。无论哪种方式,inspectdb
is a kludge都被设计为帮助从遗留系统迁移一次的过程之一,即,您将构建您的models.py
文件一次并且从不再运行inspectdb
。这不是你想要做的,因为你似乎想要在运行时添加或更改动态模型。
好的一面,Django MongoDB Engine有一些支持arbitrary embedded models within pre-defined models。但即使如此,他们似乎也不太支持它:
正如您所看到的,通用嵌入式模型会增加大量的数据记录的开销。如果您想要使用它们,请按照以下步骤操作:
总之,尽可能最好地构建您的模型,以实际符合您的要求。如果您在生产之前对模型一无所知,那么Django可能不适合您。
由于没有简单的自省来模仿inspectdb而不解决原始查询以获取列,我目前正在撕裂我的头发。我认为诺雷尔的力量不必事先严格定义模型。我不明白为什么没有一个简单的接口在集合之上,可以允许这样的东西: from magicmongo.collections import imodels #其中imodels是一个至少包含索引的字典 – 2015-09-03 16:08:26
是的。这是norel的“权力”。 Django的强大功能可以让您轻松定义一个固定且严格的模式,并在其中包含所有的逻辑,视图和管理工具。 'inspectdb'是一个混乱。 – 2015-09-03 20:18:53
我正在考虑的解决方法(实际上也解决了迁移问题)正在使用Stripe的https://github.com/stripe/mosql进行一些手工操作。 – 2015-09-07 09:25:48