在模型中指定upload_to参数似乎没有任何作用

时间:2019-05-25 21:44:07

标签: python django

我的模型如下:

class MainSample(models.Model):
    audio = models.FileField(upload_to='audio')

在以下视图中,我正在创建此模型的实例并保存它:

from .models import MainSample

def index(request):
    MainSample.objects.all().delete()
    main_sample = MainSample()
    main_sample.audio = 'audio/main_sample.mp4' # why do I need to prepend this with 'audio'?
    main_sample.save()
    context = {
        'main_sample': main_sample,
    }
    return render(request, 'mediaapp/index.html', context)

然后在模板中创建音频元素:

<!DOCTYPE HTML>
    <html>
        <body>
            <audio controls src="{{main_sample.audio.url}}"</div>
        </body>
    </html>

音频文件已预先下载,位于MEDIA_ROOT/audio/中。

代码有效,但是即使在Django文档中了解了upload_to参数在模型定义中的用途,我也不了解。

应该将audio路径附加到我的MEDIA_ROOT,但是在视图中我仍然需要在main_sample.audio的前面加上audio/,否则模板将无法加载音频文件。

有人可以用通俗易懂的方式解释upload_to在这种情况下的作用吗?如果我可以摆脱在我看来再次写audio/的话?

0 个答案:

没有答案