如何解决保存 Django FileField 时的路径重复
class Meditation(models.Model):
name = models.CharField(max_length=50)
audio = models.FileField(upload_to='AudioTracks')
length = models.IntegerField(blank=True,null=True)
此外,我还有将音频转换为 .m4a 并计算音频长度的前置信号:
@receiver(pre_save,sender=Meditation)
def setLengthMeditation(sender,**kwargs):
meditation = kwargs['instance']
if kwargs['update_fields']:
audio = mp4.MP4(meditation.audio)
length = audio.info.length
meditation.length = length
@receiver(post_save,sender=Meditation)
def setLengthToCourse(sender,**kwargs):
meditation = kwargs['instance']
if not kwargs['update_fields']:
newPath = meditation.audio.name.split('.')[0] + '.m4a'
command = 'ffmpeg -i {} -movflags +faststart -b:a 128K -af "afade=t=in:st=0:d=2" {}'.format(meditation.audio.name,newPath)
subprocess.call(command,shell=True)
meditation.audio = File(open(newPath,'rb'))
meditation.save(update_fields=['audio','length'])
因此,如您所见,当我将音频从任何格式转换为 .m4a 时,我会尝试将新音频指向现有模型:
command = 'ffmpeg -i {} -movflags +faststart -b:a 128K -af "afade=t=in:st=0:d=2" {}'.format(meditation.audio.name,newPath)
subprocess.call(command,shell=True)
meditation.audio = File(open(newPath,'rb'))
问题是,当我将模型指向现有文件时,Django 将其保存在 upload_to
中,它就像 {Audiotracks/} + file.name {AudioTracks/file.m4a} = AudioTracks/AudioTracks/file.m4a
问题是,我能否以某种方式让 Django 不复制文件或在保存时剪切路径,以免发生重复
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。