Django get_FOO_display在一个列表中

时间:2015-01-28 06:22:04

标签: django

我有一个带有选择的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'

为什么会这样,是否有更好的方法来获得相同的输出?

由于

1 个答案:

答案 0 :(得分:0)

问题是proc是一个列表,而procedure字段需要一个字符串。

你需要提取第一个元素,获取字符串然后你可以分配它。

此外,您正在使用proc迭代k,但之后您正在重新分配它。那没有意义。可能你想要那样的东西

for k in proc:
    technique = Technique(procedure=k)
    m.append(str(technique.get_procedure_display()))