私はこのようなモデルを持っています:
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 を取得したことを確認したら、トークの長さを次のように seconds 属性に保存します。
audio = MP3(path_to_file)
self.seconds = audio.info.length
問題は、保存する前に、アップロードされたファイルにパスがないことです (このチケットを参照してくださいwontfix
。
ModelForm
s が役立つエラー (「ばか、MP3 をアップロードしていません」など) を表示できるように、素敵な検証エラーを発生させたいと思います。
保存する前にファイルにアクセスする方法を教えてください。
psファイルを検証するより良い方法がMP3であることを誰かが知っているなら、私はすべて耳にします-ID3データをいじりたいと思っています(アーティスト、アルバム、タイトル、そしておそらくアルバムアートを設定するので、処理可能にする必要があります変異原による)。