Cargas de Django: descarte los duplicados cargados, use el archivo existente (verificación basada en md5)

Tengo un modelo con unFileField, que contiene los archivos subidos por el usuario. Como quiero ahorrar espacio, me gustaría evitar duplicados.

Lo que me gustaría lograr:

Calcular los archivos subidossuma de comprobación md5Almacene el archivo con elnombre de archivo basado en su md5sumSi ya existe un archivo con ese nombre (el nuevo archivo es unduplicar)descarta el archivo cargado y usa el archivo existente en su lugar

1 y2 ya esta funcionando, pero¿Cómo me olvidaría de un duplicado cargado y utilizaría el archivo existente?

Tenga en cuenta que me gustaríamantener el archivo existente yno sobrescribirlo (principalmente para mantener el tiempo modificado igual - mejor para la copia de seguridad).

Notas:

Estoy usando Django 1.5El controlador de carga esdjango.core.files.uploadhandler.TemporaryFileUploadHandler

Código:

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)

Cualquier ayuda es apreciada!

Respuestas a la pregunta(4)

Su respuesta a la pregunta