解析Django查询集JSON

2 投票
1 回答
3605 浏览
提问于 2025-04-17 02:56

我想把一个查询结果处理成可以输出成json格式的数据。不过,我需要让新的jQuery UI自动补全功能也能使用这些数据,而这个自动补全功能需要有 labelidvalue 这几个键,才能正常读取数据。

目前我使用的是:

    emp_list = Employees.objects.filter(eng_name__icontains=q_term)

    json_serializer = serializers.get_serializer('json')()
    json_data = json_serializer.serialize
           (emp_list, ensure_ascii=False, fields=('eng_name', 'chi_name'))

输出的结果大概是这样的:

[{"pk": 1, "model": "system.employees", 
"fields": {"rank": "manager", "eng_name": "Eli"}}, 
........]

我希望能把它处理成这样的格式:

[{"id": 1, "label": "Eli (manager)", "value": "Eli (manager)"}, ....]

那么,最好的做法是什么呢?

1 个回答

2

在你的视图中构建它,然后把它转成JSON格式

employees_output_list = []
for emp in emp_list:
  name_rank_str = "%s (%s)" % (emp.first_name, emp.rank)
  emp_dict = {
    "id": emp.pk,
    "label": name_rank_str,
    "value": name_rank_str,
  }
  employees_output_list.append(emp_dict)
return HttpResponse(json.dumps(employees_output_list))

像这样做,具体的字段名称我不太清楚

撰写回答