gpt4 book ai didi

django - 在保存对象之前处理文件上传

转载 作者:行者123 更新时间:2023-12-02 09:32:39 25 4
gpt4 key购买 nike

我有一个这样的模型:

class Talk(BaseModel):
title = models.CharField(max_length=200)
mp3 = models.FileField(upload_to = u'talks/', max_length=200)
seconds = models.IntegerField(blank = True, null = True)

我想在保存之前验证上传的文件是 MP3,如下所示:

def is_mp3(path_to_file):
from mutagen.mp3 import MP3
audio = MP3(path_to_file)
return not audio.info.sketchy

一旦我确定我有一个 MP3,我想将谈话的长度保存在秒属性中,如下所示:

audio = MP3(path_to_file)
self.seconds = audio.info.length

问题是,在保存之前,上传的文件没有路径(请参阅 this ticket ,关闭为 wontfix),因此我无法处理 MP3。

我想提出一个很好的验证错误,以便 ModelForm 可以显示有用的错误(“你这个白痴,你没有上传 MP3”或其他内容)。

知道如何在保存文件之前访问该文件吗?

附注如果有人知道验证文件的更好方法是 MP3,我洗耳恭听 - 我还希望能够处理 ID3 数据(设置艺术家、专辑、标题和可能的专辑封面,所以我需要它可以通过mutagen)。

最佳答案

您可以访问 request.FILES 中的文件数据在您看来。

我认为最好的方法是 bind uploaded files to a form ,覆盖表单 clean method ,得到UploadedFile object从 clean_data 中,按照您喜欢的方式验证它,然后覆盖 save method并使用有关该文件的信息填充您的模型实例,然后保存它。

关于django - 在保存对象之前处理文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com