我得到一个json结果,而images
部分与id不匹配
像:
{
"id": 11
"title":"AAA"
"createday":"2015-01-01"
"images": [
"B_123.jpg"
],
},
{
"id": 12
"title":"BBB"
"createday":"2015-01-01"
"images": [
"A_123.jpg"
],
},
但实际上,id = 11应与图片A_123.jpg
匹配,而id = 12应与图片B_123.jpg
匹配
因为images
需要在功能上做某事,所以它们不能很好地匹配。
如何让它与正确的订单匹配?
这是我的代码:
views.py
item_list = CombineQueryset(queryset1, queryset2)
return Response(item_list.jsonlize(request))
serializes.py
class CombineQueryset(serializers.ModelSerializer):
def __init__(self, query1, query2, *args, **kwargs):
def get_images(dictionary, obj):
images = []
for image in obj.image_set.all():
images.append(image.path)
dictionary["images"] = images
return dictionary
query_list1 = query1.values(
'title',
'createday',
'id',
)
.....
query_list1 = map(get_images, query_list1, query1)
self.query_list = query_list1 + query_list2
答案 0 :(得分:0)
我认为这必定是由于代码中没有显示的内容,例如query_list1
与query1
或id=12
在query2
中的不同顺序以及代码query_list2
不是query_list1
代码的精确剪切和粘贴。
试试这个:
class CombineQueryset(serializers.ModelSerializer):
def __init__(self, query1, query2, *args, **kwargs):
def querylist(queryset):
return [
{
'title': obj.title,
'createday': obj.createday,
'id': obj.id,
'images': obj.image_set.values_list('path', flat=True),
}
for obj in queryset
]
self.query_list = querylist(query1) + querylist(query2)