【发布时间】:2015-01-14 10:23:58
【问题描述】:
我编写了一个 Ajax 调用来返回演员姓名。除了序列化之外,一切正常。
型号
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
'dict' 对象没有属性 '_meta'
而模型查询“值”工作正常。以下工作正常,
actor_list = self.filter(name__icontains=query)
我需要“价值观”来减少数据传输。我怎样才能做到这一点?
请帮忙,提前谢谢。
【问题讨论】:
-
您不需要序列化查询集对象,只需将字典添加为 data['lists'] = 列表,您可以将列表用作模板中的对象。
-
Tanveer 是正确的,如果您正在使用 json 进行 ajax 调用,则序列化应该从您作为列表返回的查询集中自动完成。 Serializer.serialize 用于将整个查询集返回到 json,您可以将其传递回您的视图模板。
-
你们是对的。如果您添加了“答案”而不是 cmets,我会将您的答案标记为正确答案!
标签: python json django dictionary django-queryset