在我的项目中,我有一个带有学校模型和学校建模模型的应用程序。
学校模型有各种图像的字段,如徽标,印章等:
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,但我无法弄清楚如何执行前两个。
答案 0 :(得分:1)
我将上传修改为此功能,并将其包含在类def:
上方的文件中def get_upload_to(instance, filename):
return School._meta.get_field(instance.field_name).upload_to+"/"+filename