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