Загрузка в Django: удаление загруженных дубликатов, использование существующего файла (проверка на основе md5)

У меня есть модель сFileField, который содержит загруженные пользователем файлы. Поскольку я хочу сэкономить место, я бы хотел избежать дубликатов.

Чего бы я хотел достичь:

подсчитывать загруженные файлыконтрольная сумма md5Сохраните файл симя файла на основе его md5sumЕсли файл с таким именем уже существует (новый файлдублировать),удалить загруженный файл и использовать вместо него существующий файл

1 а также2 уже работает, нокак бы мне забыть о загруженном дубликате и использовать вместо этого существующий файл?

Обратите внимание, что я хотел бысохранить существующий файл а такжене перезаписать его (в основном, чтобы сохранить измененное время - лучше для резервного копирования).

Примечания:

Я использую Django 1.5Обработчик загрузкиdjango.core.files.uploadhandler.TemporaryFileUploadHandler

Код:

def media_file_name(instance, filename):
    h = instance.md5sum
    basename, ext = os.path.splitext(filename)
    return os.path.join('mediafiles', h[0:1], h[1:2], h + ext.lower())

class Media(models.Model):
    orig_file = models.FileField(upload_to=media_file_name)
    md5sum = models.CharField(max_length=36)
    ...

    def save(self, *args, **kwargs):
            if not self.pk:  # file is new
                md5 = hashlib.md5()
                for chunk in self.orig_file.chunks():
                    md5.update(chunk)
                self.md5sum = md5.hexdigest()
            super(Media, self).save(*args, **kwargs)

Любая помощь приветствуется!

Ответы на вопрос(4)

Ваш ответ на вопрос