使用python shell,如何将图像与类中的ImageField相关联(Django)

时间:2017-01-18 02:41:44

标签: python django python-2.7 model pillow

好的,我在一个名为大学的模型中添加了一个字段。

以下是新字段:

sketch.pde

所以我的媒体文件夹中有一些图像,但是如何将它们与课堂中的某些图像相关联。

我会说logo = models.ImageField(upload_to="logos", default="static/images.default.png")

会吗?是图像路径。图像路径究竟是什么?使用枕头。

1 个答案:

答案 0 :(得分:2)

ImageField类型的地址以MEDIA_ROOT路径开头,然后是upload_to参数中确定的目录,也是类似upload_to_dir/file_name.ext格式的数据库保存路径。 您的default参数必须以uploat_to值开头,请在下面更改此类似内容:

logo = models.ImageField(upload_to="logos", default="logos/images.default.png")

要选择与college值相关的图片,您可以覆盖模型的save方法:

class MyModel(models.Model):
    logo = models.ImageField(upload_to="logos", default="logos/images.default.png", blank=None)
    college = models.IntegerField(choices=[(1, 'Harvard'), (2, 'MIT'), (3, 'Oxford')])

    def save(self, *args, **kwargs):
        if self.logo is None:
            if self.college == 1:
                self.logo = 'logos/Harvard.png'
            if self.college == 2:
                self.logo = 'logos/MIT.png'
            if self.college == 3:
                self.logo = 'logos/Oxford.png'

        super(MyModel, self).save(*args, **kwargs)

注意:这些默认图片必须已存在于logos目录中或复制到此目录。