Merge pull request #1944 from erdenezul/deprecation_warning_pymongo37
Use insert_one instead of deprecated one #1899
This commit is contained in:
commit
78a9420f26
@ -5,7 +5,9 @@ Changelog
|
|||||||
Development
|
Development
|
||||||
===========
|
===========
|
||||||
- (Fill this out as you fix issues and develop your features).
|
- (Fill this out as you fix issues and develop your features).
|
||||||
=======
|
- Remove deprecated `save()` method and used `insert_one()` #1899
|
||||||
|
|
||||||
|
=================
|
||||||
Changes in 0.16.0
|
Changes in 0.16.0
|
||||||
=================
|
=================
|
||||||
- Various improvements to the doc
|
- Various improvements to the doc
|
||||||
|
@ -12,7 +12,9 @@ from mongoengine.base import (BaseDict, BaseDocument, BaseList,
|
|||||||
TopLevelDocumentMetaclass, get_document)
|
TopLevelDocumentMetaclass, get_document)
|
||||||
from mongoengine.common import _import_class
|
from mongoengine.common import _import_class
|
||||||
from mongoengine.connection import DEFAULT_CONNECTION_NAME, get_db
|
from mongoengine.connection import DEFAULT_CONNECTION_NAME, get_db
|
||||||
from mongoengine.context_managers import switch_collection, switch_db
|
from mongoengine.context_managers import (set_write_concern,
|
||||||
|
switch_collection,
|
||||||
|
switch_db)
|
||||||
from mongoengine.errors import (InvalidDocumentError, InvalidQueryError,
|
from mongoengine.errors import (InvalidDocumentError, InvalidQueryError,
|
||||||
SaveConditionError)
|
SaveConditionError)
|
||||||
from mongoengine.python_support import IS_PYMONGO_3
|
from mongoengine.python_support import IS_PYMONGO_3
|
||||||
@ -426,11 +428,18 @@ class Document(six.with_metaclass(TopLevelDocumentMetaclass, BaseDocument)):
|
|||||||
Helper method, should only be used inside save().
|
Helper method, should only be used inside save().
|
||||||
"""
|
"""
|
||||||
collection = self._get_collection()
|
collection = self._get_collection()
|
||||||
|
with set_write_concern(collection, write_concern) as wc_collection:
|
||||||
if force_insert:
|
if force_insert:
|
||||||
return collection.insert(doc, **write_concern)
|
return wc_collection.insert_one(doc).inserted_id
|
||||||
|
# insert_one will provoke UniqueError alongside save does not
|
||||||
|
# therefore, it need to catch and call replace_one.
|
||||||
|
if '_id' in doc:
|
||||||
|
raw_object = wc_collection.find_one_and_replace(
|
||||||
|
{'_id': doc['_id']}, doc)
|
||||||
|
if raw_object:
|
||||||
|
return doc['_id']
|
||||||
|
|
||||||
object_id = collection.save(doc, **write_concern)
|
object_id = wc_collection.insert_one(doc).inserted_id
|
||||||
|
|
||||||
# In PyMongo 3.0, the save() call calls internally the _update() call
|
# In PyMongo 3.0, the save() call calls internally the _update() call
|
||||||
# but they forget to return the _id value passed back, therefore getting it back here
|
# but they forget to return the _id value passed back, therefore getting it back here
|
||||||
|
Loading…
x
Reference in New Issue
Block a user