2014-06-25 83 views
0

我最近開始使用Django,到目前爲止我只嘗試過使用SQLite作爲數據庫。現在,我想使用MongoDB,但是在定義模型時遇到了一個小問題。MongoDB和Django模型結構

我與和的NodeJS貓鼬的工作之前,我就已經定義的模型:

date : Date, 
type : String, 
    exerc : { 
     name : String, 
     series : { 
     weight : Number, 
     rep : Number, 
     quant : Number 
     } 
    } 

在Django中我還是有點失落。我想過兩種不同的方法,但我不確定這兩種方法是否正確。

第一種方法會是這樣(忽略的數據類型,現在):

class Work(models.Model): 
    date 
    type 
    exerC#reference to Exerc 

class Exerc(models.Model): 
    name 
    series #reference to Serie 

class Serie(models.Model): 
    weight 
    rep 
    quant 

第二種方法將基本上涉及添加類型ListField()來exerc並嵌入系列也可作爲ListField( )在工作模型上。由於我不確定這是如何工作的(我只見過幾個例子),我想知道這是否適用於我。

此外,我需要鏈接工作與特定的用戶(另一個模型創建)。什麼是最好的方式來做到這一點?

任何人都可以爲我清除它嗎?

回答

0

關於模型設計的最佳方法,它取決於您的使用案例。如果你在「Exerc」和「Serie」上需要一些過濾器,如果你需要經常更新/添加/刪除「Exerc」和「Serie」實例 - 第一種方法會更好。如果你總是爲特定的「工作」實例獲得所有「Exerc」和「Serie」,並且不經常更新記錄 - 第二種方法也適用。

至於「工作」和「用戶」之間的關係 - 它取決於您用來與mongodb進行交互的應用程序。

+0

謝謝你的回答!那麼我會嘗試第一種方法。我不確定ForeignKey在非關係數據庫中是否可行。 –

+0

對不起,我沒考慮你使用非關係型數據庫。據我所知django默認不支持mongodb,所以可能的決定取決於您用來與mongodb進行交互的應用程序。 –

+0

你認爲使用SQLite可能會更好嗎? –