Fix for FileField losing ref without default

fixes hmarr/mongoengine#458
This commit is contained in:
Ross Lawley
2012-05-09 20:50:11 +01:00
parent 45e015d71d
commit 97114b5948
3 changed files with 59 additions and 8 deletions

View File

@@ -946,14 +946,16 @@ class FileField(BaseField):
# Check if a file already exists for this model
grid_file = instance._data.get(self.name)
if isinstance(grid_file, self.proxy_class):
if not grid_file.key:
grid_file.key = self.name
grid_file.instance = instance
return grid_file
return self.proxy_class(key=self.name, instance=instance,
db_alias=self.db_alias,
collection_name=self.collection_name)
if not isinstance(grid_file, self.proxy_class):
grid_file = self.proxy_class(key=self.name, instance=instance,
db_alias=self.db_alias,
collection_name=self.collection_name)
instance._data[self.name] = grid_file
if not grid_file.key:
grid_file.key = self.name
grid_file.instance = instance
return grid_file
def __set__(self, instance, value):
key = self.name