Dynamic Documents now support string query lookups
This commit is contained in:
		| @@ -412,6 +412,12 @@ class BaseDynamicField(BaseField): | |||||||
|     def lookup_member(self, member_name): |     def lookup_member(self, member_name): | ||||||
|         return member_name |         return member_name | ||||||
|  |  | ||||||
|  |     def prepare_query_value(self, op, value): | ||||||
|  |         if isinstance(value, basestring): | ||||||
|  |             from mongoengine.fields import StringField | ||||||
|  |             return StringField().prepare_query_value(op, value) | ||||||
|  |         return self.to_mongo(value) | ||||||
|  |  | ||||||
|  |  | ||||||
| class ObjectIdField(BaseField): | class ObjectIdField(BaseField): | ||||||
|     """An field wrapper around MongoDB's ObjectIds. |     """An field wrapper around MongoDB's ObjectIds. | ||||||
|   | |||||||
| @@ -98,6 +98,27 @@ class DynamicDocTest(unittest.TestCase): | |||||||
|         p = p.get() |         p = p.get() | ||||||
|         self.assertEquals(22, p.age) |         self.assertEquals(22, p.age) | ||||||
|  |  | ||||||
|  |     def test_complex_dynamic_document_queries(self): | ||||||
|  |         class Person(DynamicDocument): | ||||||
|  |             name = StringField() | ||||||
|  |  | ||||||
|  |         Person.drop_collection() | ||||||
|  |  | ||||||
|  |         p = Person(name="test") | ||||||
|  |         p.age = "ten" | ||||||
|  |         p.save() | ||||||
|  |  | ||||||
|  |         p1 = Person(name="test1") | ||||||
|  |         p1.age = "less then ten and a half" | ||||||
|  |         p1.save() | ||||||
|  |  | ||||||
|  |         p2 = Person(name="test2") | ||||||
|  |         p2.age = 10 | ||||||
|  |         p2.save() | ||||||
|  |  | ||||||
|  |         self.assertEquals(Person.objects(age__icontains='ten').count(), 2) | ||||||
|  |         self.assertEquals(Person.objects(age__gte=10).count(), 1) | ||||||
|  |  | ||||||
|     def test_complex_data_lookups(self): |     def test_complex_data_lookups(self): | ||||||
|         """Ensure you can query dynamic document dynamic fields""" |         """Ensure you can query dynamic document dynamic fields""" | ||||||
|         p = self.Person() |         p = self.Person() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user