我的模型如下:
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/
的话?