【发布时间】:2011-07-14 10:50:50
【问题描述】:
我遇到了奇怪的情况——从 Django shell 创建一些 Mongoengine 对象是成功的,但是从 Django 视图创建相同的对象看起来很成功,但 MongoDB 中没有出现任何数据。 IE。相同的代码 -
from myapp.mongomodels import MyModel
m = MyModel(a=1, b=2, c=3)
m.save()
从manage.py shell 运行时生成插入到 MongoDB 中的新对象,从 Django 视图运行时不生成任何内容。我已经跟踪了代码,我看到mongoengine.Document.save() 方法运行正常,没有任何异常。
看起来我错过了一些明显的东西。
将不胜感激。
【问题讨论】:
-
settings是一样的吗?他们使用的是同一个数据库吗?请提供设置相同的证据。 -
啊,我好像找到了问题所在。我在保存对象之前为其分配了一个主键值,pymongo 认为这是一个更新,而不是插入。但是,这段代码在 shell 中工作而在 Django 视图中不起作用仍然很奇怪。当我解决问题时会回复。
-
您应该为您的问题提供这个答案。其他人也会有这个问题。
-
manage.pyshell 应该使用与manage.py runserver相同的设置。我相信设置是相同的,因为我在使用我的测试视图打开网页时看到执行了 MongoDB 更新查询(参数与我从视图中调用的完全相同)。
标签: python django mongodb mongoengine