使用FileField在Django中保存原始文件名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用FileField在Django中保存原始文件名相关的知识,希望对你有一定的参考价值。
def generate_uuid_file_name(self, filename):
self.original_filename = filename
extension = filename.rsplit('.', 1)[1]
newfilename = uuid.uuid4().__str__() + '.' + extension
return self.directory() + newfilename
class FileUpload(models.Model):
original_filename = models.CharField(max_length=128)
fileobj = models.FileField(upload_to=generate_uuid_file_name)
上传时,
{"errors": {"original_filename": ["This field is required."]}, "success": false}
将blank = True,null = True添加到FileUpload.original_filename允许上载成功但不保存原始文件名。在Django 1.5上。根据this post,这应该工作。
答案
在视图中执行此操作(在null = True之后,blank = True再次成为模型的一部分):
file_object = UploadFileForm.save(commit=False)
file_object.original_filename = request.FILES['file'].name
file_object.save()
请注意,您需要根据您的上下文等相应地更改上述代码
以上是关于使用FileField在Django中保存原始文件名的主要内容,如果未能解决你的问题,请参考以下文章
使用 model.FileField 在 Django 中保存之前修改文件名
Django - 如何创建文件并将其保存到模型的 FileField?
Django 在 MEDIA_ROOT 文件夹中创建文件并将其保存到 FileField