【发布时间】:2015-03-02 16:59:27
【问题描述】:
我在 MongoDB 中有一些数据库,我想动态创建模型,因为有很多数据库,我无法手动创建。问题:
- models.py 应该是什么样的? (inspectdb 是否适用于 mongodb 数据库或仅适用于基于 SQL 的数据库?)
- 由于数据库模型是动态创建的,如何编写序列化程序类以返回动态字段?
提前致谢。
【问题讨论】:
标签: python django mongodb django-rest-framework
我在 MongoDB 中有一些数据库,我想动态创建模型,因为有很多数据库,我无法手动创建。问题:
提前致谢。
【问题讨论】:
标签: python django mongodb django-rest-framework
Django 支持对象-关系映射器,它针对的是传统的关系数据库。虽然there are a number of mongodb packages for Django,但它们都不支持inspectdb 来构建您的模型。无论哪种方式,inspectdb is a kludge 被设计为一个过程之一,以帮助从遗留系统迁移出来,即您将构建您的 models.py 文件 once 并且永远不会再次运行 inspectdb .这不是您想要做的,因为您似乎想要可以在运行时添加或更改的动态模型。
从好的方面来说,Django MongoDB Engine 对arbitrary embedded models within pre-defined models 有一些支持。但即便如此,他们似乎也不太支持它:
如您所见,通用嵌入式模型会增加大量开销,导致数据记录膨胀。如果您仍然想使用它们,请按照以下方式操作...
总之,尽量构建模型以实际满足您的要求。如果您在生产之前对模型一无所知,那么 Django 可能不是适合您的解决方案。
【讨论】:
inspectdb 是一团糟。