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

Can self be used to access object attributes?

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

    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

不可能那样做。使用 https://docs.python.org/2/library/functions.html#getattr

您要查找的是hasattr and getattr

阅读这些函数的 python 文档后,您可能会考虑这样编写代码:

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