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
|
"""Lookup a field based on its attribute and return a list containing
|
||||||
the field's parents and the field.
|
the field's parents and the field.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from mongoengine.fields import ListField
|
||||||
|
|
||||||
if not isinstance(parts, (list, tuple)):
|
if not isinstance(parts, (list, tuple)):
|
||||||
parts = [parts]
|
parts = [parts]
|
||||||
fields = []
|
fields = []
|
||||||
@ -762,7 +765,7 @@ class BaseDocument(object):
|
|||||||
|
|
||||||
for field_name in parts:
|
for field_name in parts:
|
||||||
# Handle ListField indexing:
|
# Handle ListField indexing:
|
||||||
if field_name.isdigit() and hasattr(field, 'field'):
|
if field_name.isdigit() and isinstance(field, ListField):
|
||||||
new_field = field.field
|
new_field = field.field
|
||||||
fields.append(field_name)
|
fields.append(field_name)
|
||||||
continue
|
continue
|
||||||
|
@ -3388,6 +3388,17 @@ class QuerySetTest(unittest.TestCase):
|
|||||||
self.assertEqual(1, MyDoc.objects.update_one(upsert=True, inc__47=1))
|
self.assertEqual(1, MyDoc.objects.update_one(upsert=True, inc__47=1))
|
||||||
self.assertEqual(MyDoc.objects.get()['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):
|
def test_read_preference(self):
|
||||||
class Bar(Document):
|
class Bar(Document):
|
||||||
pass
|
pass
|
||||||
|
Loading…
x
Reference in New Issue
Block a user