Added a cleaner way to get collection names

Also handles dynamic collection naming - refs #180.
This commit is contained in:
Ross Lawley
2011-06-20 11:48:12 +01:00
parent 1b0323bc22
commit f41c5217c6
6 changed files with 130 additions and 73 deletions

View File

@@ -252,7 +252,7 @@ class DateTimeField(BaseField):
return datetime.datetime(value.year, value.month, value.day)
# Attempt to parse a datetime:
#value = smart_str(value)
# value = smart_str(value)
# split usecs, because they are not recognized by strptime.
if '.' in value:
try:
@@ -278,6 +278,7 @@ class DateTimeField(BaseField):
return None
class ComplexDateTimeField(StringField):
"""
ComplexDateTimeField handles microseconds exactly instead of rounding
@@ -526,6 +527,7 @@ class MapField(DictField):
super(MapField, self).__init__(field=field, *args, **kwargs)
class ReferenceField(BaseField):
"""A reference to a document that will be automatically dereferenced on
access (lazily).
@@ -595,7 +597,7 @@ class ReferenceField(BaseField):
id_ = document
id_ = id_field.to_mongo(id_)
collection = self.document_type._meta['collection']
collection = self.document_type._get_collection_name()
return pymongo.dbref.DBRef(collection, id_)
def prepare_query_value(self, op, value):
@@ -664,7 +666,7 @@ class GenericReferenceField(BaseField):
id_ = document
id_ = id_field.to_mongo(id_)
collection = document._meta['collection']
collection = document._get_collection_name()
ref = pymongo.dbref.DBRef(collection, id_)
return {'_cls': document._class_name, '_ref': ref}