Mongoengine 从 shell 中插入正常,但在 Django 视图中无效
我遇到了一个奇怪的情况——在Django的命令行界面中创建Mongoengine对象是成功的,但在Django的视图中创建同样的对象看起来也成功了,但在MongoDB中却没有任何数据出现。也就是说,代码是这样的 -
from myapp.mongomodels import MyModel
m = MyModel(a=1, b=2, c=3)
m.save()
在运行manage.py shell
时,这段代码会在MongoDB中插入一个新对象,而在Django视图中运行时却什么都没有。我追踪了代码,发现mongoengine.Document.save()
方法运行得很好,没有任何异常。
看起来我可能漏掉了什么明显的东西。
如果能得到任何帮助,我将非常感激。
2 个回答
0
之前我提到过,问题出在我在保存之前就给主键赋了值。
我有一个系统,其中一些数据存储在MySQL里,另一些对应的数据存储在MongoDB里。首先创建MySQL的记录,然后紧接着创建与之相关的MongoDB记录,两个记录的主键值是一样的。因此,pymongo认为这是一个更新请求,而不是插入请求,所以根本没有插入任何记录。
1
你应该可以做到这一点,但需要强制保存,使用以下代码:
from myapp.mongomodels import MyModel
m = MyModel(a=1, b=2, c=3)
m.save(force_insert=True)