TypeError is not JSON serializable

問題が起きているのは request.session の中をちょこっといぢっているところ。

TypeError at /
<ObjectItem: 漢字の名前> is not JSON serializable
Request Method:	POST
...

というエラーが表示される。


version 1.4 の時は動いていたのに 1.7 にダメになってるってことは、django に何か変更とかあったのかな?
というわけで、ドキュメントをちゃんと読むのが良いのだろうけど、サクっとググってみたらそのままの質問が見つかった。

どうやら v1.6 から serializers が pickle から json に変わったらしい。
で、pickle では問題なかったけど json では問題になる場合にこのエラーが出てしまう。


というわけで、回答にあるように settings.py に SESSION_SERIALIZER を指定する行を加えてみた。

SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'

結果、問題の箇所ではエラーにならずにちゃんと動作した〜!


本当は json の sirializer でちゃんと動くようにする方が良いのだろうけど、それはまた今度ちゃんとドキュメントを読んでからの話。