我是 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(...)
谢谢,它有效!