如何统计Django QueryDict中指定键的取值数量?
解决Django中QueryDict获取多选值并统计数量的问题
在Django里,当表单提交多个同名复选框选项时,直接通过QueryDict[key]只能拿到最后一个选中的值——这是QueryDict的默认行为,为兼容HTTP表单提交特性,重复键的取值默认返回最后一个。要获取所有选中选项并统计数量,你需要使用getlist()方法:
修改后的代码
def dietPlan(request): # 获取表单提交的数据 querydict = request.POST print(querydict) # 使用getlist获取所有选中的选项 opciones_cena = querydict.getlist('opcionesCena') print(opciones_cena) # 统计选中选项的数量 print(len(opciones_cena))
对应的打印结果
<QueryDict: {'csrfmiddlewaretoken': ['qNAKsaNlPOO3UY7X76sNy1bEuidxd4WDvUlwJXD6BYxA1JTkyra0A86eYMHJfJ3B'], 'opcionesCena': ['AlimentoID352', 'AlimentoID356', 'AlimentoID360', 'AlimentoID364']}> ['AlimentoID352', 'AlimentoID356', 'AlimentoID360', 'AlimentoID364'] 4
关键说明
querydict['opcionesCena']:QueryDict的索引访问会返回该键对应的最后一个值,所以你之前得到的是AlimentoID364,len()计算的是这个字符串的字符长度(13)。querydict.getlist('opcionesCena'):这个方法会返回该键对应的所有值组成的列表,此时len()就能正确统计选中选项的数量(4)。
内容的提问来源于stack exchange,提问作者Darian Yane
相关产品推荐
相关产品推荐

