2014-02-10 45 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

一般而言,管理器类('对象')上的方法与数据库一起工作。 –