3 回答
TA贡献1802条经验 获得超4个赞
我认为您需要将循环内的 all_images 列表清空为:
def getalbum(self,request):
albums=Album.objects.filter(user=request.user)
album={}
image_list={}
all_results=[]
for a in albums:
album_images=AlbumImage.objects.filter(album=a)
all_images = []
for i in album_images:
image_object=Upload.objects.get(id=str(i.image))
image_list=str(image_object.image)
all_images.append(image_list)
album[a.name]=all_images
all_results.append(album)
return Response(all_results)
TA贡献1744条经验 获得超4个赞
这里:
all_images=[]
for a in albums:
album_images=AlbumImage.objects.filter(album=a)
for i in album_images:
image_object=Upload.objects.get(id=str(i.image))
image_list=str(image_object.image)
all_images.append(image_list)
album[a.name]=all_images
您在all_imagesfor 循环之前初始化并继续附加到它,因此两个相册最终共享相同的图像列表。修复很简单:all_images在 for 循环中初始化:
for a in albums:
all_images=[]
album_images=AlbumImage.objects.filter(album=a)
for i in album_images:
image_object=Upload.objects.get(id=str(i.image))
image_list=str(image_object.image)
all_images.append(image_list)
album[a.name]=all_images
话虽如此,您使它变得比实际复杂得多,而且您没有正确使用 django 的功能。您可以使用 a代替手动创建AlbumImage
模型,而无需手动创建列表等(并获得更好的性能,允许 ORM 优化您的查询)。M2MField
添加回答
举报