【问题标题】:Django return custom json and add values that need to be deal withDjango返回自定义json并添加需要处理的值
【发布时间】:2015-01-22 09:15:22
【问题描述】:

我得到一个 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))

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

【问题讨论】:

    标签: json django django-serializer


    【解决方案1】:

    我认为这一定是由于代码中未显示的某些原因,例如 query_list1query1 的排序不同,或者 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-25
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 2018-10-28
      • 1970-01-01
      相关资源
      最近更新 更多