2014-02-10 79 views
0

首先免責聲明:我使用的是django-mongodb-engine,可能我觀察的問題是由於不同的db驅動程序。無論如何,似乎調用MyModel.object.create()實際上會創建一個數據庫條目。這與django文檔相反,它聲明「請注意,實例化模型絕不會觸及數據庫; for that, you need to save().Source。這裏有一個例子:Django防止Object.Create期間自動保存

In [4]: MyModel.objects.filter(email='test') 
Out[4]: [<MyModel: MyModel object>] 

In [5]: MyModel.objects.create(email='test') 
Out[5]: <MyModel: MyModel object> 

In [6]: MyModel.objects.filter(email='test') 
Out[6]: [<MyModel: MyModel object>, <MyModel: MyModel object>] 

正如你看到的上面,創建()確實「觸摸數據庫。」有什麼辦法可以防止這種行爲?

回答

2

這是預期的行爲。 create在db中創建一條記錄。您引用的doc段落指的是在內存中實例化模型:

my_instance = MyModel(email='test') 
+0

文檔的錯誤和可能是我的無知使我產生了巨大的痛苦。 :)我想.create()_was_你如何實例化一個對象!但是現在我明白了你寫的內容的不同之處,這正是我想要做的。謝謝! – James

+0

一般而言,管理器類('對象')上的方法與數據庫一起工作。 –