我尝试使用JSON,Django和Ajax返回一个字符串,但由于某种原因,它们的查询集导致JSON也包含了字段名称。例如,它不是仅返回字段的值,而是返回[{' field_name':value}]作为整个字符串。在控制台中,它打印出:{' field_name':" [{' field_name':value}]"}
我写的代码是:
def drugsanddoses(request):
drugIdentifier = request.POST.get('drugID')
drug_group = Antiepileptics.objects.get(name=drugIdentifier)
drug_name = RiskCalculator.objects.filter(drug_name=drug_group).values('drug_name')
l_dose = RiskCalculator.objects.filter(drug_name=drug_group).values('l_dose')
h_dose = RiskCalculator.objects.filter(drug_name=drug_group).values('h_dose')
pubmed_id = RiskCalculator.objects.filter(drug_name=drug_group).values('pubmed_id')
updated = RiskCalculator.objects.filter(drug_name=drug_group).values('updated')
data = {}
try:
data['drug_name'] = str(drug_name)
data['l_dose'] = str(l_dose)
data['h_dose'] = str(h_dose)
data['pubmed_id'] = str(pubmed_id)
data['updated'] = str(updated)
except:
raise Http404
print(data)
return JsonResponse(data, safe=False)
答案 0 :(得分:2)
这是预期的行为,因为您正在str(queryset)
查询values()
。 ORM中的values
将返回一个dict列表。如果您只想要值,请执行:
RiskCalculator.objects.filter(drug_name=drug_group) \
.values_list('drug_name', flat=True).distinct()
values和values_list的Django文档。
即使这样,在每个查询上执行str()
也没有意义,您根本不需要str()
。因为你需要将整个python数据结构序列化为json。否则,您将很难将字符串转换为javascript中的值列表。