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.