有史以来最有用的错误:TypeError:unhashable type:'list'

时间:2013-12-05 02:53:46

标签: python django testing fsm

我刚刚重写了一大块Django代码,这些代码与40-like状态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+的逐行?

3 个答案:

答案 0 :(得分:3)

尝试传递--traceback选项。

答案 1 :(得分:0)

检查manage.py是否有吞咽异常行为;可能是这样的:

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

如果找到它,请改为raise,这样就可以看到整个追溯。

答案 2 :(得分:0)

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