8
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}

在 FileUpload.original_filename 中添加 blank=True, null=True 可以让上传成功,但不会保存原始文件名。在 Django 1.5 上。根据这篇文章,这应该可行。

4

1 回答 1

8

在视图中执行此操作(在 null=True 之后,blank=True 再次成为模型的一部分):

file_object = UploadFileForm.save(commit=False)
file_object.original_filename = request.FILES['file'].name
file_object.save()

请注意,您将需要根据您的上下文等相应地更改上述代码

于 2013-06-28T01:39:29.933 回答