如何将imagesField的上传路径(upload_to参数)基于models.py中的另一个字段?

时间:2016-06-19 23:50:06

标签: python django

我的目标是能够通过管理页面上传图片,并将图片自动放入我选择的目录中。我想在管理页面中选择的图片的上传路径使用路径中餐馆的名称。例如,如果餐馆的名称是IHOP,我希望upload_path是,例如./myapp/static/myapp/images/IHOP/。我目前的代码如下:

Models.py

class Restaurant(models.Model):
    ...
    name = models.CharField(max_length=100, default='')
    header_image = models.ImageField()

    def save(self, *args, **kwargs):
        upload_path = 'some_path'
        self.header_image = models.ImageField(upload_to=upload_path + name)
        super(Restaurant, self).save(*args, **kwargs)

但是,当我尝试运行此命令(通过管理页面保存项目)时,我收到以下错误: ImageField has no attribute '_committed'

我无法在header_image初始化中直接引用name变量,因为该类尚未实例化(我尝试过这种方法)。

在初始化字段后,有没有办法可以更改ImageField的upload_to参数?同样,是否有任何解决方案可以让我根据餐馆的名称制作图像的上传文件路径?

最后,我想指出一个类似的问题已被提出,但情况并非如此。在另一个问题中,提问者想要使用来自完全不同模型的字段。在这种情况下,我希望使用一个字段(名称)来创建另一个字段(header_image)。

0 个答案:

没有答案