我编写了一个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 /
中的AttributeError&#39;字典&#39;对象没有属性&#39; _meta&#39;
而模型查询&#34;值&#34;工作良好。以下工作正常,
actor_list = self.filter(name__icontains=query)
我需要&#34;价值观&#34;为了减少数据传输。我怎样才能做到这一点?
请提前帮助,谢谢。
答案 0 :(得分:2)
serializers.serialize
仅适用于完整查询集。但values
会返回一个dicts容器,因此您可以或多或少地将其直接传递给json.dumps
- 您只需将容器本身转换为列表即可。
lists = Actor.objects.actor_like(query)
data = json.dumps(list(lists))