Handle dynamic fieldnames that look like digits (#434)

This commit is contained in:
Ross Lawley 2013-08-07 09:07:57 +00:00
parent 473110568f
commit 5bcc454678
3 changed files with 9 additions and 1 deletions

View File

@ -4,6 +4,7 @@ Changelog
Changes in 0.8.4 Changes in 0.8.4
================ ================
- Handle dynamic fieldnames that look like digits (#434)
- Added get_user_document and improve mongo_auth module (#423) - Added get_user_document and improve mongo_auth module (#423)
- Added str representation of GridFSProxy (#424) - Added str representation of GridFSProxy (#424)
- Update transform to handle docs erroneously passed to unset (#416) - Update transform to handle docs erroneously passed to unset (#416)

View File

@ -762,7 +762,7 @@ class BaseDocument(object):
for field_name in parts: for field_name in parts:
# Handle ListField indexing: # Handle ListField indexing:
if field_name.isdigit(): if field_name.isdigit() and hasattr(field, 'field'):
new_field = field.field new_field = field.field
fields.append(field_name) fields.append(field_name)
continue continue

View File

@ -3299,6 +3299,13 @@ class QuerySetTest(unittest.TestCase):
Test.objects(test='foo').update_one(upsert=True, set__test='foo') Test.objects(test='foo').update_one(upsert=True, set__test='foo')
self.assertTrue('_cls' in Test._collection.find_one()) self.assertTrue('_cls' in Test._collection.find_one())
def test_update_upsert_looks_like_a_digit(self):
class MyDoc(DynamicDocument):
pass
MyDoc.drop_collection()
self.assertEqual(1, MyDoc.objects.update_one(upsert=True, inc__47=1))
self.assertEqual(MyDoc.objects.get()['47'], 1)
def test_read_preference(self): def test_read_preference(self):
class Bar(Document): class Bar(Document):
pass pass