2015-03-02 67 views
2

我有一些數據庫在MongoDB中,我想創建動態模型,因爲有很多數據庫,我不能手動完成。問題:從現有的MongoDB數據庫創建Django模型

  1. 我的models.py應該是什麼樣子? (是否inspectdb與mongodb數據庫或僅基於SQL的dbs一起工作?)
  2. 由於數據庫模型是動態創建的,因此如何編碼序列化程序類以返回動態字段?

在此先感謝。

回答

2

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可能不適合您。

+0

由於沒有簡單的自省來模仿inspectdb而不解決原始查詢以獲取列,我目前正在撕裂我的頭髮。我認爲諾雷爾的力量不必事先嚴格定義模型。我不明白爲什麼沒有一個簡單的接口在集合之上,可以允許這樣的東西: from magicmongo.collections import imodels #其中imodels是一個至少包含索引的字典 – 2015-09-03 16:08:26

+0

是的。這是norel的「權力」。 Django的強大功能可以讓您輕鬆定義一個固定且嚴格的模式,並在其中包含所有的邏輯,視圖和管理工具。 'inspectdb'是一個混亂。 – 2015-09-03 20:18:53

+0

我正在考慮的解決方法(實際上也解決了遷移問題)正在使用Stripe的https://github.com/stripe/mosql進行一些手工操作。 – 2015-09-07 09:25:48

相關問題