Merge remote-tracking branch 'origin/pr/496'

This commit is contained in:
Ross Lawley 2013-11-29 11:49:54 +00:00
commit 954131bd51
2 changed files with 15 additions and 1 deletions

View File

@ -755,6 +755,9 @@ class BaseDocument(object):
"""Lookup a field based on its attribute and return a list containing
the field's parents and the field.
"""
from mongoengine.fields import ListField
if not isinstance(parts, (list, tuple)):
parts = [parts]
fields = []
@ -762,7 +765,7 @@ class BaseDocument(object):
for field_name in parts:
# Handle ListField indexing:
if field_name.isdigit() and hasattr(field, 'field'):
if field_name.isdigit() and isinstance(field, ListField):
new_field = field.field
fields.append(field_name)
continue

View File

@ -3388,6 +3388,17 @@ class QuerySetTest(unittest.TestCase):
self.assertEqual(1, MyDoc.objects.update_one(upsert=True, inc__47=1))
self.assertEqual(MyDoc.objects.get()['47'], 1)
def test_dictfield_key_looks_like_a_digit(self):
"""Only should work with DictField even if they have numeric keys."""
class MyDoc(Document):
test = DictField()
MyDoc.drop_collection()
doc = MyDoc(test={'47': 1})
doc.save()
self.assertEqual(MyDoc.objects.only('test__47').get().test['47'], 1)
def test_read_preference(self):
class Bar(Document):
pass