Merge pull request #692 from rochacbruno/master
Updates with no operator should default to $set Fix #667
This commit is contained in:
		| @@ -525,6 +525,13 @@ modifier comes before the field, not after it:: | ||||
|     >>> post.tags | ||||
|     ['database', 'nosql'] | ||||
|  | ||||
| .. note:: | ||||
|  | ||||
|     If no modifier operator is specified the default will be ``$set``. So the following sentences are identical:: | ||||
|  | ||||
|         >>> BlogPost.objects(id=post.id).update(title='Example Post') | ||||
|         >>> BlogPost.objects(id=post.id).update(set__title='Example Post') | ||||
|  | ||||
| .. note:: | ||||
|  | ||||
|     In version 0.5 the :meth:`~mongoengine.Document.save` runs atomic updates | ||||
|   | ||||
| @@ -164,6 +164,9 @@ def update(_doc_cls=None, **update): | ||||
|             mongo_update.update(value) | ||||
|             continue | ||||
|         parts = key.split('__') | ||||
|         # if there is no operator, default to "set" | ||||
|         if len(parts) < 3 and parts[0] not in UPDATE_OPERATORS: | ||||
|             parts.insert(0, 'set') | ||||
|         # Check for an operator and transform to mongo-style if there is | ||||
|         op = None | ||||
|         if parts[0] in UPDATE_OPERATORS: | ||||
|   | ||||
| @@ -1074,11 +1074,13 @@ class InstanceTest(unittest.TestCase): | ||||
|  | ||||
|         self.assertRaises(OperationError, update_no_value_raises) | ||||
|  | ||||
|         def update_no_op_raises(): | ||||
|         def update_no_op_should_default_to_set(): | ||||
|             person = self.Person.objects.first() | ||||
|             person.update(name="Dan") | ||||
|             person.reload() | ||||
|             return person.name | ||||
|  | ||||
|         self.assertRaises(InvalidQueryError, update_no_op_raises) | ||||
|         self.assertEqual("Dan", update_no_op_should_default_to_set()) | ||||
|  | ||||
|     def test_update_unique_field(self): | ||||
|         class Doc(Document): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user