我认为使用 UUID 会使您的文件名变长。这也可能对您有所帮助:-
import os, random, string
length = 13
chars = string.ascii_letters + string.digits + '!@#$%^&*()'
random.seed = (os.urandom(1024))
a = ''.join(random.choice(chars) for i in range(length))
注意:- 根据您的意愿调整长度参数。
filename = '%s%s' % (Yourfilename,str(a))
将models.py更改为:
fileName = CharField(max_length=10, blank=True,unique=True)
将views.py更改为:
try:
filename = filename
storeFileName = models.objects.create(fileName=filename)
except Exception,e:
import os, random, string
length = 13
chars = string.ascii_letters + string.digits + '!@#$%^&*()'
random.seed = (os.urandom(1024))
a = ''.join(random.choice(chars) for i in range(length))
filename = '%s%s' % (Yourfilename,str(a))
storeFileName = models.objects.create(fileName=filename)
您不能将unique=True 设置为fileField 这可能是Django 中的错误,它的工作方式如下:
显然,发生的事情是这样的:
如果文件已存在,则新文件将命名为 >.,其中 > 是使名称唯一所需的下划线数。因此,例如,当一个名为 foo.png 的文件被多次上传时,第二个文件将被命名为 foo_.png,第三个文件将被命名为 foo__.png 等等。
不过,这可能应该记录在案。我不确定这种重命名是发生在管理代码还是模型代码中。
所以最后,您可能只有一个选项可以单独保存文件名并在上传文件之前签入。