gpt4 book ai didi

javascript - JSON 数据已将字段名称连接到值字段中 (Django)

转载 作者:行者123 更新时间:2023-12-02 15:07:43 27 4
gpt4 key购买 nike

我试图用 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)

最佳答案

这是预期的行为,因为您正在查询的 values() 上执行 str(queryset)。 ORM 中的 values 将返回一个字典列表。如果您只想要值,请执行以下操作:

RiskCalculator.objects.filter(drug_name=drug_group) \
.values_list('drug_name', flat=True).distinct()

Django 文档 valuesvalues_list .

即使如此,在每个查询上执行 str() 也是没有意义的,您根本不需要 str() 。因为需要将整个python数据结构序列化为json。否则,您将很难将字符串转换为 JavaScript 中的值列表。

关于javascript - JSON 数据已将字段名称连接到值字段中 (Django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35002373/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com