나는 파일 이름이 무작위되고 싶어하기 때문에 나는과 같이 임의의 파일 이름을 반환 upload_to
기능을 사용 : 나는 모델 내부 속성에 원래 파일 이름을 저장하려는 그러나Django : FileField에서 원래 파일 이름을 저장하는 방법?
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)
. 이 같은 것이 작동하지 않습니다.
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)
어떻게하면됩니까?
감사합니다.
내 테스트에서 완벽하게 작동합니다. 그것이 당신을 위해 얼마나 효과적이지 않습니까? 무슨 일이야? 뷰 코드에 문제가있는 것일까 요? – rantanplan
이렇게하고 db에서 개체를 쿼리하면 여전히 filename 값이 표시됩니까? – miki725
예. 실제로 쉘 내부에서 테스트했습니다. 나는 그것을 죽이고 다시 시작했으며 파일 이름이 거기에 있었다. 사실 처음에 나는 get_random_filename 안에'instance.save()'를하는 것을 잊었다 고 생각했다. 그러나 그것은 필요하지 않은 것으로 보인다. – rantanplan