将Queryset转换为带有JSON值的字典。

问题描述 投票:1回答:1

我写了一个Ajax调用来返回actor名字。除了序列化之外,一切都能正常工作。

模型

class ActorManager (models.Manager):
    def actor_like(self, query):
        actor_list = self.values('name', 'id').filter(name__icontains=query)
        # actor_list = self.filter(name__icontains=query) <-- this works. but I need 'values'
        return actor_list

视图.py

def search(request, types, query):
    lists = Actor.objects.actor_like(query)
    data = serializers.serialize('json', lists)
    return HttpResponse(data, content_type='application/json')

以上会产生错误。

属性错误在searchactorbal

'dict'对象没有属性'_meta'。

而模型查询 "values "可以正常工作。下面的工作正常。

actor_list = self.filter(name__icontains=query)

我需要 "值 "来减少数据传输。我如何才能实现这个目标?

请大家帮忙,先谢谢大家。

python json django dictionary django-queryset
1个回答
2
投票

serializers.serialize 是只针对完整的querysets。但是 values 返回一个 dicts 容器,所以你可以或多或少地直接将其传递给 json.dumps - 你所需要做的就是将容器本身转换为一个列表。

lists = Actor.objects.actor_like(query)
data = json.dumps(list(lists))
© www.soinside.com 2019 - 2024. All rights reserved.