有史以来最无用的错误:类型错误:不可哈希类型:"列表"



我刚刚重写了一大块Django代码,这些代码与一个40多岁的状态FSM有关。对于所涉及的三个模型中的每一个,都有很多STATE_DEFINITIONS="4.7.1",并且如果当前状态==SOME_STATE或[ONE_STATE,or_ANOTHER],则有很多检查。

只有一个地方我用字典。说其中一个模型看起来像:

class OneModel(models.Model):
    STATUS_ONE = "1.0"
    STATUS_TWO = "2.0"
    STATUS_MAPPING = {
              STATUS_ONE:OtherModel.STATUS_X,
              STATUS_TWO:OtherModels.STATUS_Y,
    }

所有的键都是唯一的字符串,如果我从代码中删除它,同样的事情也会发生。

当我python manage.py test my_app时,我得到了可能是有史以来最没有帮助的错误消息:TypeError: unhashable type: 'list'就是这样,没有发生的地方,没有背景。有人对如何调试这个不涉及文件中800+逐行的问题有什么建议吗?

尝试传递--traceback选项。

检查manage.py是否有异常吞咽行为;可能类似于:

try:
    ....
except Exception, exc:
    print exc.message

如果您找到了它,请将其改为raise,这样您就可以看到整个回溯。

如果安装了ipython,可以尝试:ipython -i manage.py test my_app。然后输入%debug命令进行调试。

相关内容

最新更新