如果sqlite到Mongodb怎麼辦?只使用不同的驅動程序不能使服務器工作。例如models.TextField(sqlite) - > models.StringField(mongodb)。這是不可避免的,對吧?這似乎很難說溶膠化完全的數據庫和Django的
TextField
和StringField
之間的依賴關係是不是你會出現問題,因爲它是在幾乎所有的數據庫都支持,但考慮到這個庫django-mongodb-engine,它重用基本字段已經存在於Django ORM的範圍內,例如
class Post(models.Model):
title = models.CharField() <-- both Django ORM and mongodb-engine have this
text = models.TextField() <-- both Django ORM and mongodb-engine have this
這個模型將作爲既是SQL和MongoDB引擎,但如果你(在不違約的Django ORM引擎)功能使用MongoDB的,只有像ListField()
class Post(models.Model):
title = models.CharField()
text = models.TextField()
tags = ListField() # <-- not supported everywhere
然後你遷移到SQL引擎將涉及一些手動工作來映射該字段。
因此,當項目應該改變數據庫結構時,我們應該在models.py
中更改很多代碼。沒關係嗎?
通常情況是,要更改數據庫結構,請在models.py
中進行更改。之後,您將運行migration,這是生成腳本以更改數據庫的步驟(例如添加新的SQL表列)。對於MongoDB,沒有明確的遷移,因爲它的模式是靈活的(如果您願意,可以使用無模式)。
至於管理員,在涉及到Django模型時相當聰明,您可能需要定義要顯示在管理員中的模型和字段,但在詳細視圖中,您不必擔心每個單場,基於在models.py
的信息,並修改數據庫驅動程序Django管理理解他們,這是在settings.py
的
DATABASES
值再次非常感謝你爲這個豐富有益的指導和信息。我應該更好地學習與你的聯繫。 –