added 'upsert' arg to QuerySet.update and QuerySet.update_one
This commit is contained in:
parent
3b6d8fab47
commit
26c6e4997c
@ -588,7 +588,7 @@ class QuerySet(object):
|
|||||||
|
|
||||||
return mongo_update
|
return mongo_update
|
||||||
|
|
||||||
def update(self, safe_update=True, **update):
|
def update(self, safe_update=True, upsert=False, **update):
|
||||||
"""Perform an atomic update on the fields matched by the query.
|
"""Perform an atomic update on the fields matched by the query.
|
||||||
|
|
||||||
:param safe: check if the operation succeeded before returning
|
:param safe: check if the operation succeeded before returning
|
||||||
@ -602,14 +602,14 @@ class QuerySet(object):
|
|||||||
update = QuerySet._transform_update(self._document, **update)
|
update = QuerySet._transform_update(self._document, **update)
|
||||||
try:
|
try:
|
||||||
self._collection.update(self._query, update, safe=safe_update,
|
self._collection.update(self._query, update, safe=safe_update,
|
||||||
multi=True)
|
upsert=upsert, multi=True)
|
||||||
except pymongo.errors.OperationFailure, err:
|
except pymongo.errors.OperationFailure, err:
|
||||||
if unicode(err) == u'multi not coded yet':
|
if unicode(err) == u'multi not coded yet':
|
||||||
message = u'update() method requires MongoDB 1.1.3+'
|
message = u'update() method requires MongoDB 1.1.3+'
|
||||||
raise OperationError(message)
|
raise OperationError(message)
|
||||||
raise OperationError(u'Update failed (%s)' % unicode(err))
|
raise OperationError(u'Update failed (%s)' % unicode(err))
|
||||||
|
|
||||||
def update_one(self, safe_update=True, **update):
|
def update_one(self, safe_update=True, upsert=False, **update):
|
||||||
"""Perform an atomic update on first field matched by the query.
|
"""Perform an atomic update on first field matched by the query.
|
||||||
|
|
||||||
:param safe: check if the operation succeeded before returning
|
:param safe: check if the operation succeeded before returning
|
||||||
@ -623,7 +623,7 @@ class QuerySet(object):
|
|||||||
# as the default may change to 'True'
|
# as the default may change to 'True'
|
||||||
if pymongo.version >= '1.1.1':
|
if pymongo.version >= '1.1.1':
|
||||||
self._collection.update(self._query, update, safe=safe_update,
|
self._collection.update(self._query, update, safe=safe_update,
|
||||||
multi=False)
|
upsert=upsert, multi=False)
|
||||||
else:
|
else:
|
||||||
# Older versions of PyMongo don't support 'multi'
|
# Older versions of PyMongo don't support 'multi'
|
||||||
self._collection.update(self._query, update, safe=safe_update)
|
self._collection.update(self._query, update, safe=safe_update)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user