python - 将查询集转换为包含 JSON 值的字典

标签 python json django dictionary django-queryset

我编写了一个 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

view.py

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

上面抛出错误,

/search/actor/bal/处的属性错误

“dict”对象没有属性“_meta”

而模型查询“值”工作正常。下面的工作正常,

actor_list = self.filter(name__icontains=query)

我需要“值”来减少数据传输。我怎样才能实现这个目标?

请帮忙,提前致谢。

最佳答案

serializers.serialize 仅适用于完整查询集。但是 values 返回一个字典容器,因此您或多或少可以将其直接传递给 json.dumps - 您所需要做的就是将容器本身转换为列表。

lists = Actor.objects.actor_like(query)
data = json.dumps(list(lists))

关于python - 将查询集转换为包含 JSON 值的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973849/

相关文章:

javascript - 带有自定义图标的 Bokeh 自定义操作

Python - 判断pandas数据框中是否存在非连续日期

json - Swift 到 Swift 3 代码转换 : Reading JSON files

javascript - Json按2个字段格式化

python - Django,Mezzanine : Autodiscover error, 引用不存在的模型

python - Django 1.5 : OperationalError in windows when running "python manage.py syncdb" using postgresql-psycopg2

python - scikit-learn 中聚类超参数评估的网格搜索

python - sqlalchemy.exc.DataError : (psycopg2. DataError) 整数超出范围

java - Android - 如何从 URL/JSON 获取特定数据?

python - Django Celery 任务运行两次