我试图检索目录中的图像列表,并将此列表存储到类的属性中。但是当我试图从对象中获取列表时,它显示为空。这是类:
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:
{}
答案 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