Fixed MapField lookup for fields without declared lookups (MongoEngine/mongoengine#46)
This commit is contained in:
		| @@ -5,6 +5,7 @@ Changelog | |||||||
| Changes in 0.6.X | Changes in 0.6.X | ||||||
| ================ | ================ | ||||||
|  |  | ||||||
|  | - Fixed MapField lookup for fields without declared lookups (MongoEngine/mongoengine#46) | ||||||
| - Fixed BinaryField python value issue (MongoEngine/mongoengine#48) | - Fixed BinaryField python value issue (MongoEngine/mongoengine#48) | ||||||
| - Fixed SequenceField non numeric value lookup (MongoEngine/mongoengine#41) | - Fixed SequenceField non numeric value lookup (MongoEngine/mongoengine#41) | ||||||
| - Fixed queryset manager issue (MongoEngine/mongoengine#52) | - Fixed queryset manager issue (MongoEngine/mongoengine#52) | ||||||
|   | |||||||
| @@ -641,7 +641,7 @@ class QuerySet(object): | |||||||
|                 from mongoengine.fields import ReferenceField, GenericReferenceField |                 from mongoengine.fields import ReferenceField, GenericReferenceField | ||||||
|                 if isinstance(field, (ReferenceField, GenericReferenceField)): |                 if isinstance(field, (ReferenceField, GenericReferenceField)): | ||||||
|                     raise InvalidQueryError('Cannot perform join in mongoDB: %s' % '__'.join(parts)) |                     raise InvalidQueryError('Cannot perform join in mongoDB: %s' % '__'.join(parts)) | ||||||
|                 if getattr(field, 'field', None): |                 if hasattr(getattr(field, 'field', None), 'lookup_member'): | ||||||
|                     new_field = field.field.lookup_member(field_name) |                     new_field = field.field.lookup_member(field_name) | ||||||
|                 else: |                 else: | ||||||
|                    # Look up subfield on the previous field |                    # Look up subfield on the previous field | ||||||
|   | |||||||
| @@ -929,6 +929,19 @@ class FieldTest(unittest.TestCase): | |||||||
|         doc = self.db.test.find_one() |         doc = self.db.test.find_one() | ||||||
|         self.assertEqual(doc['x']['DICTIONARY_KEY']['i'], 2) |         self.assertEqual(doc['x']['DICTIONARY_KEY']['i'], 2) | ||||||
|  |  | ||||||
|  |     def test_map_field_lookup(self): | ||||||
|  |         """Ensure MapField lookups succeed on Fields without a lookup method""" | ||||||
|  |  | ||||||
|  |         class Log(Document): | ||||||
|  |             name = StringField() | ||||||
|  |             visited = MapField(DateTimeField()) | ||||||
|  |  | ||||||
|  |         Log.drop_collection() | ||||||
|  |         Log(name="wilson", visited={'friends': datetime.now()}).save() | ||||||
|  |  | ||||||
|  |         self.assertEqual(1, Log.objects( | ||||||
|  |                                 visited__friends__exists=True).count()) | ||||||
|  |  | ||||||
|     def test_embedded_db_field(self): |     def test_embedded_db_field(self): | ||||||
|  |  | ||||||
|         class Embedded(EmbeddedDocument): |         class Embedded(EmbeddedDocument): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user