我写了一个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)
我需要 "值 "来减少数据传输。我如何才能实现这个目标?
请大家帮忙,先谢谢大家。
serializers.serialize
是只针对完整的querysets。但是 values
返回一个 dicts 容器,所以你可以或多或少地直接将其传递给 json.dumps
- 你所需要做的就是将容器本身转换为一个列表。
lists = Actor.objects.actor_like(query)
data = json.dumps(list(lists))