Django:使用字段名称作为字符串在FileField上调用save()



我是 Django 的新手,已经阅读并尝试了我脑海中出现的一切。

我有一个基于模型的表单。该模型包括 3 个文件字段字段:

img_big = models.FileField(upload_to='images/%Y/%m/b',max_length=100)
img_med = models.FileField(upload_to='images/%Y/%m/m',max_length=100)   
img_sml = models.FileField(upload_to='images/%Y/%m/s',max_length=100)

在我的代码中,我想循环访问这些字段并将生成的文件保存到每个字段中。'img'是我们的文件,文件名是文件名。因此,这是有效的方法:

new_image.img_big.save(filename, img)

但我需要一个带有字段名称而不是img_big的变量,例如:

new_image.variable.save(filename, img)
or 
new_image.'test_'+filename.save(filename, img)

我尝试使用 setattr(),但我不能或不知道如何使用它设置文件名,在这种情况下可能是不可能的。

new_image.__dict__['fieldname'].save(filename, img)

也不起作用。

正如 Paulo Bu 所注意到的,正确的解决方案很简单,使用 getattr():

getattr(new_image, 'variable').save(...)

谢谢,它有效!

最新更新