例如在我的代码中:
class ClassName():
[...]
image_bigger = models.ImageField(upload_to='dir', max_length=500, blank=True, null=True)
image_big = models.ImageField(upload_to='dir', max_length=500, blank=True, null=True)
image_medium = models.ImageField(upload_to='dir', max_length=500, blank=True, null=True)
image_small = models.ImageField(upload_to='dir', max_length=500, blank=True, null=True)
def create_resized(self, attr_name, resized_size):
[...]
if attr_name == "bigger":
self.bigger.save(filename, suf, save=False)
elif attr_name == "big":
self.big.save(filename, suf, save=False)
elif attr_name == "medium":
self.medium.save(filename, suf, save=False)
elif attr_name == "small":
self.small.save(filename, suf, save=False)
我想知道是否有像getattr这样的东西可以避免那些丑陋的elif代码块......
答案 0 :(得分:1)
为什么不使用getattr / hasattr调用?你可以这样写:
full_attr_name = 'image_' + attr_name
if hasattr(self, full_attr_name):
getattr(self, full_attr_name).save(filename, suf, save=False)
希望,你已经抓住了这个想法。
答案 1 :(得分:0)
如果你有不同大小的图像,那么我认为使用sorl-thumbnail会是一种更好的方法。链接附件。
http://sorl-thumbnail.readthedocs.org/en/latest/examples.html#model-examples