Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
cf54d6d6f8 | ||
|
a03fe234d0 | ||
|
d88d40cc08 | ||
|
d3b4af116e | ||
|
352b23331b |
1
AUTHORS
1
AUTHORS
@@ -247,3 +247,4 @@ that much better:
|
||||
* Erdenezul Batmunkh (https://github.com/erdenezul)
|
||||
* Andy Yankovsky (https://github.com/werat)
|
||||
* Bastien Gérard (https://github.com/bagerard)
|
||||
* Trevor Hall (https://github.com/tjhall13)
|
||||
|
@@ -6,6 +6,11 @@ Development
|
||||
===========
|
||||
- (Fill this out as you fix issues and develop your features).
|
||||
|
||||
=================
|
||||
Changes in 0.16.3
|
||||
=================
|
||||
- Fix $push with $position operator not working with lists in embedded document #1965
|
||||
|
||||
=================
|
||||
Changes in 0.16.2
|
||||
=================
|
||||
|
@@ -23,7 +23,7 @@ __all__ = (list(document.__all__) + list(fields.__all__) +
|
||||
list(signals.__all__) + list(errors.__all__))
|
||||
|
||||
|
||||
VERSION = (0, 16, 2)
|
||||
VERSION = (0, 16, 3)
|
||||
|
||||
|
||||
def get_version():
|
||||
|
@@ -345,7 +345,7 @@ def update(_doc_cls=None, **update):
|
||||
value = {key: {'$each': value}}
|
||||
elif op in ('push', 'pushAll'):
|
||||
if parts[-1].isdigit():
|
||||
key = parts[0]
|
||||
key = '.'.join(parts[0:-1])
|
||||
position = int(parts[-1])
|
||||
# $position expects an iterable. If pushing a single value,
|
||||
# wrap it in a list.
|
||||
|
@@ -842,10 +842,16 @@ class InstanceTest(MongoDBTestCase):
|
||||
|
||||
@requires_mongodb_gte_26
|
||||
def test_modify_with_positional_push(self):
|
||||
class Content(EmbeddedDocument):
|
||||
keywords = ListField(StringField())
|
||||
|
||||
class BlogPost(Document):
|
||||
tags = ListField(StringField())
|
||||
content = EmbeddedDocumentField(Content)
|
||||
|
||||
post = BlogPost.objects.create(
|
||||
tags=['python'], content=Content(keywords=['ipsum']))
|
||||
|
||||
post = BlogPost.objects.create(tags=['python'])
|
||||
self.assertEqual(post.tags, ['python'])
|
||||
post.modify(push__tags__0=['code', 'mongo'])
|
||||
self.assertEqual(post.tags, ['code', 'mongo', 'python'])
|
||||
@@ -856,6 +862,16 @@ class InstanceTest(MongoDBTestCase):
|
||||
['code', 'mongo', 'python']
|
||||
)
|
||||
|
||||
self.assertEqual(post.content.keywords, ['ipsum'])
|
||||
post.modify(push__content__keywords__0=['lorem'])
|
||||
self.assertEqual(post.content.keywords, ['lorem', 'ipsum'])
|
||||
|
||||
# Assert same order of the list items is maintained in the db
|
||||
self.assertEqual(
|
||||
BlogPost._get_collection().find_one({'_id': post.pk})['content']['keywords'],
|
||||
['lorem', 'ipsum']
|
||||
)
|
||||
|
||||
def test_save(self):
|
||||
"""Ensure that a document may be saved in the database."""
|
||||
|
||||
|
Reference in New Issue
Block a user