可以自己用来访问对象属性吗?

时间:2015-04-18 17:15:33

标签: python django django-models

我正在尝试验证一些图像字段,但我不知道是否可以使用表示字段名称的变量和for循环来迭代模型&#39 ; s属性?

    class Guitar(models.Model):
         images0 = models.ImageField(upload_to='images', blank=True)

         def clean(self):
         images = ['images0', ...]
         for idx, val in enumerate(images):
            if self[val].size > 2000000:

那么可以像这样使用self吗?

self[val].size == self.images0.size

2 个答案:

答案 0 :(得分:2)

您正在寻找的是hasattrgetattr

在阅读了这些函数的python文档之后,您可以考虑编写如下代码:

 def clean(self):
     images = ['images0', ...]
     for idx, val in enumerate(images):
         if hasattr(self, val):
             image = getattr(self, val)
             if image.size > 2000000:
                 ...

答案 1 :(得分:0)