0

我得到一个 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需要在功能上做点什么,所以不能很好的匹配。

我怎样才能让它与正确的顺序相匹配?

这是我的代码:

视图.py

item_list = CombineQueryset(queryset1, queryset2)
return Response(item_list.jsonlize(request))

序列化.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
4

1 回答 1

0

我认为这一定是由于代码中未显示的某些内容,例如query_list1vs的不同顺序query1或其中id=12query2代码,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)
于 2015-01-22T11:06:56.480 回答