指定动态文件上载位置

时间:2017-06-24 10:10:04

标签: python django django-models

所以,我刚刚开始学习Django,我想制作一个应用程序。这是一个简单的应用程序,我刚刚初始化了我的管理视图,然后我有一个名为“Book”的模型。这就像有关书籍的信息一样。用户可以输入书名,作者,描述并上传书籍封面图像。

我的工作没有打嗝。但是,目前,图像正保存在“/ media”文件夹中,因为这是我在设置文件的MEDIA_ROOT中指定的内容(完全没问题)。现在,我想要的是,而不是在我的models.py中,它被保存到它自己的目录中。例如:

书名:如果上帝是银行家

我希望封面图片保存在“/ media / albums /如果上帝是银行家”中。

我该怎么做?我查看了“FileField”的“upload_to”属性。所以,我试过这样的事情:

book_name = models.CharField(max_length=500, allow_blank=False,trim_whitespace=True)
comic_image = models.FileField(upload_to='%s/' % book_name)

当然这没有用,因为book_name没有返回str类型(我知道它会出错)。那么,我怎样才能让它发挥作用?我失踪的任何东西或我能做些什么来实现我的目标?

1 个答案:

答案 0 :(得分:0)

upload_to参数可以调用。 所以你可以像这样定义函数:

def upload_location(instance, filename):
    return '{}/{}'.format(instance.book_name, filename)

然后在模型中使用此函数:

comic_image = models.FileField(upload_to=upload_location)