Merge remote-tracking branch 'origin/pr/496'
This commit is contained in:
commit
954131bd51
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user