使用 python shell,如何将图像与 class 中的 ImageField 相关联 (Django)
Using python shell, how do I associate an image with an ImageField in a class (Django)
好的,所以我在名为 college 的模型中添加了一个字段。
这是新字段:
logo = models.ImageField(upload_to="logos", default="static/images.default.png")
所以我的媒体文件夹中有一些图像,但如何将它们与 class 中的某些图像相关联。
我会说Harvard.logo = ?
会吗?是图像路径。图片路径到底是什么?使用枕头。
ImageField
类型的地址以MEDIA_ROOT
路径开始,然后是upload_to
参数中确定的目录,在db保存路径上也类似upload_to_dir/file_name.ext
格式。
您的 default
参数必须以 uploat_to
值开头,更改如下类似内容:
logo = models.ImageField(upload_to="logos", default="logos/images.default.png")
对于 select 与 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
目录中或复制到此。
好的,所以我在名为 college 的模型中添加了一个字段。
这是新字段:
logo = models.ImageField(upload_to="logos", default="static/images.default.png")
所以我的媒体文件夹中有一些图像,但如何将它们与 class 中的某些图像相关联。
我会说Harvard.logo = ?
会吗?是图像路径。图片路径到底是什么?使用枕头。
ImageField
类型的地址以MEDIA_ROOT
路径开始,然后是upload_to
参数中确定的目录,在db保存路径上也类似upload_to_dir/file_name.ext
格式。
您的 default
参数必须以 uploat_to
值开头,更改如下类似内容:
logo = models.ImageField(upload_to="logos", default="logos/images.default.png")
对于 select 与 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
目录中或复制到此。