我有一个带有选择的CharField程序的模型技术。
我有一个列表,其中包含不同数量的这些选择:
procs = [['CS'],['C1','C2','ID'],['C1','C2','C3','C4'],
['ID'],['RP'],['GY']]
(例如'CS'是奶酪等)
我正在尝试输出诸如 ['奶酪'],2 ['Chips','Nuts'],0 等等
for proc in procs:
proc_tot = Technique.objects.filter(
date__range=[d1,d2]).filter(procedure__in=proc).count()
m=[]
for k in proc:
k = Technique(procedure=proc)
m.append(str(k.get_procedure_display()))
m, proc_tot
但是get_FOO_display()抛出了一个TypeError:unhashable类型:'list'
为什么会这样,是否有更好的方法来获得相同的输出?
由于
答案 0 :(得分:0)
问题是proc
是一个列表,而procedure
字段需要一个字符串。
你需要提取第一个元素,获取字符串然后你可以分配它。
此外,您正在使用proc
迭代k
,但之后您正在重新分配它。那没有意义。可能你想要那样的东西
for k in proc:
technique = Technique(procedure=k)
m.append(str(technique.get_procedure_display()))