Django:为javascript序列化ValuesQuerySet

时间:2014-05-11 12:01:38

标签: javascript django

我想循环查询集并访问javascript中的字段值。

我将查询集从视图发送到模板:

render(request, 'home.html', {'data': queryset})

现在我想访问javascript中的一些字段。 data不会发生这种情况,因为它尚未序列化。

我没有选择,只能获得有关字段的查询集的序列化版本......

userData = UserDetails.objects.all().values("first_name", "email")
from django.core import serializers
data2 = serializers.serialize('json', userData)

...但我收到了以下错误:

AttributeError: 'str' object has no attribute '_meta'

我尝试了这里给出的解决方案Serializing data results from query with select_related into json但是在javascript中我获得了以下数据:

"[{"first_name": "pream"}, {"first_name": "micel"}, {"first_name": "Johhy"}, {"first_name": "hraper"}]"

任何解决问题的方向都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

我有一个解决方案:

在视图文件中使用相同的序列化,添加模板上下文并将其传递给模板。

data2 = serializers.serialize('json', userData)
context = { 
        'data2' : data2,
}
return HttpResponse(template.render(context, request))

从你的模板中获取下面的上下文中的这个json,并使用'“'而不是'quot;'来序列化。

scapejs指令将完成工作

var jsonData = "{{ data2|escapejs }}";

它对我有用。

此致