django用setattr更改图像文件位置

时间:2012-04-26 16:04:59

标签: python django image django-models

在我的项目中,我有一个带有学校模型和学校建模模型的应用程序。

学校模型有各种图像的字段,如徽标,印章等:

seal_image = models.ImageField(upload_to="sealimgs", null=True, blank=True)
logo_image = models.ImageField(upload_to="logos", null=True, blank=True)

学校建模模型包含相应学校领域的字段和图像字段。

field_name = models.CharField(max_length=255, default="")
image_field = models.ImageField(upload_to='img', null=True, blank=True)

当学校建议获得批准后,我覆盖了save,以便通过getattr(field_name)获取相关学校的字段,并使用setattr(field_name,image_field)设置它(我正在简化语法,但你明白了)。

问题是,文件仍然保存在img中,大概是因为我使用的是setattr而不是特定于图像字段的保存,这会将其上传到正确的目录。

那我该怎么做?有意义的是,我可能以某种方式获取属性的upload_to值,以某种方式使用该文件路径重新保存图像,然后在重新保存的图像上使用setattr,但我无法弄清楚如何执行前两个。

1 个答案:

答案 0 :(得分:1)

我将上传修改为此功能,并将其包含在类def:

上方的文件中
def get_upload_to(instance, filename):
    return School._meta.get_field(instance.field_name).upload_to+"/"+filename