Index: django/db/models/base.py =================================================================== --- django/db/models/base.py (revision 3131) +++ django/db/models/base.py (working copy) @@ -307,6 +307,11 @@ def _get_FIELD_size(self, field): return os.path.getsize(self._get_FIELD_filename(field)) + def _delete_FIELD_file(self, field): + filename = self._get_FIELD_filename(field) + if os.path.isfile(filename): + os.remove(filename) + def _save_FIELD_file(self, field, filename, raw_contents): directory = field.get_directory_name() try: # Create the date-based directory if it doesn't exist. Index: django/db/models/fields/__init__.py =================================================================== --- django/db/models/fields/__init__.py (revision 3131) +++ django/db/models/fields/__init__.py (working copy) @@ -571,6 +571,7 @@ setattr(cls, 'get_%s_filename' % self.name, curry(cls._get_FIELD_filename, field=self)) setattr(cls, 'get_%s_url' % self.name, curry(cls._get_FIELD_url, field=self)) setattr(cls, 'get_%s_size' % self.name, curry(cls._get_FIELD_size, field=self)) + setattr(cls, 'delete_%s_file' % self.name, lambda instance: instance._delete_FIELD_file(self)) setattr(cls, 'save_%s_file' % self.name, lambda instance, filename, raw_contents: instance._save_FIELD_file(self, filename, raw_contents)) dispatcher.connect(self.delete_file, signal=signals.post_delete, sender=cls)