访问python对象列表

时间:2016-01-07 18:21:58

标签: python django

我试图检索目录中的图像列表,并将此列表存储到类的属性中。但是当我试图从对象中获取列表时,它显示为空。这是类:

class Hunting(models.Model):
    code = models.CharField(max_length=10) 
    description = models.CharField(max_length=500)
    images = {}

    def __str__(self):
        res = ''
        for image in self.images:
            res = res+image
        return res

    def __unicode__(self):
        return self.id

然后这就是我填写和阅读列表的方法:

page = int(page)
huntings = Paginator(Hunting.objects.all(), 9)
images = {}
for hunting in huntings.page(page):
    dir_name = settings.IMAGES_ROOT+'\\theme1\\images\\cotos\\'+str(hunting.id)+'\\'  # insert the path to your directory
    path = os.path.join(settings.STATIC_URL, dir_name)
    print >>sys.stderr, '--PATH:' + path
    if os.path.exists(path):   
        print >>sys.stderr, '--LIST IMAGE HUNTING '+str(hunting.id)+'--'
        img_list = os.listdir(path)
        hunting.images=img_list
        print >>sys.stderr, hunting.images
for hunting in huntings.page(page):
    print >>sys.stderr, '*******hunting '+str(hunting.id)+':'
    print >>sys.stderr, hunting.images

所以,当我第一次迭代并打印hunting.images列表时,我得到了:

--LIST IMAGE HUNTING 2--
['1_tn.jpg', '2_tn.jpg', '3_tn.jpg', '4_tn.jpg']
--LIST IMAGE HUNTING 4--
['coto10.png', 'coto11.png', 'coto12.png']

但是第二次迭代,试图在我得到一个空列表之前获取我存储的列表

*******hunting 2:
{}
*******hunting 4:
{}

1 个答案:

答案 0 :(得分:0)

我认为发生的事情是你为两个循环调用huntings.page(page)。你做的第一个循环将图像分配给huntings.page(page)的结果,但是你没有保留结果,所以对于第二个循环你再次调用huntings.page(page)而你得到了与以前相同的初始结果。

我不确定你想在这里实现什么,但你需要先在变量中获取返回值然后更新它:

# keep the return value in variable huntings
huntings = [for hunting in huntings.page(page)]
for hunting in huntings:
    # do your hunting.images = img_list

for hunting in huntings:
    print >>sys.stderr, hunting.images