Вставки с Mongoengine работают только из оболочки, но не из вида Django - PullRequest
1 голос
/ 14 июля 2011

У меня странная ситуация - создание какого-либо объекта Mongoengine из оболочки Django прошло успешно, но создание того же объекта из представления Django выглядит успешным, но в MongoDB не появилось никаких данных.Т.е. такой же код, как этот -

from myapp.mongomodels import MyModel

m = MyModel(a=1, b=2, c=3)
m.save()

создает новый объект, вставленный в MongoDB при запуске из manage.py shell, и ничего не производит при запуске из представления Django.Я проследил код и вижу, что mongoengine.Document.save() метод работает правильно без каких-либо исключений.

Похоже, я что-то упустил очевидное.

Буду благодарен за любую помощь.

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Вы должны быть в состоянии сделать это, но форсировать сохранение, используя:

from myapp.mongomodels import MyModel

m = MyModel(a=1, b=2, c=3)
m.save(force_insert=True)
0 голосов
/ 16 июля 2011

Как я уже говорил, проблема была в том, что я назначаю значение первичного ключа ДО сохранения.

У меня есть система, в которой некоторые данные хранятся в MySQL, а некоторые соответствующие данные хранятся в MongoDB. Сначала создается запись MySQL, связанная запись MongoDB создается сразу после записи MySQL с тем же значением первичного ключа. Таким образом, pymongo считает, что это запрос на обновление, а не запрос на вставку, и запись вообще не вставляется.

...