Django: ¿Cómo guardar el nombre del archivo original en FileField?

Quiero que los nombres de archivo sean aleatorios y por lo tanto usoupload_to función que devuelve un nombre de archivo aleatorio como tal:

from uuid import uuid4
import os
def get_random_filename(instance, filename):
    ext = filename.split('.')[-1]
    filename = "%s.%s" % (str(uuid4()), ext)
    return os.path.join('some/path/', filename)

# inside the model
class FooModel(models.Model):
    file = models.FileField(upload_to=get_random_filename)

Sin embargo, me gustaría guardar el nombre del archivo original en un atributo dentro del modelo. Algo como esto no funciona:

def get_random_filename(instance, filename):
    instance.filename = filename
    ext = filename.split('.')[-1]
    filename = "%s.%s" % (str(uuid4()), ext)
    return os.path.join('some/path/', filename)

# inside the model
class FooModel(models.Model):
    file = models.FileField(upload_to=get_random_filename)
    filename = models.CharField(max_length=128)

¿Cómo puedo hacerlo?

Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta