Djangoのキャッシュで「Instancemethod objects can't pickle」
Djangoでオブジェクトをキャッシュしておこうと思ったら、「Instancemethod objects can't pickle」みたいなエラーが出てキャッシュできなかった。
結論から言うとオブジェクト内で別のオブジェクトを作って、ごにょごにょやってるようなコードを書くと、そのオブジェクトは上手くキャッシュしてくれないらしい。エラーメッセージ見てもよくわかんないよ><。まぁそんな変なコード書くなということですね。はい。
from django.db import models
class Hoge(models.Model):
hoge=models.TextField(primary_key=True)
hogege=models.TextField()
def hogegege(self):
f = Fuga()
...Fugaの読み込み処理みたいな
self.hoge = f.fuga
self.hogege = f.fugaga
return self
class Fuga(models.Model):
fuga=models.TextField(primary_key=True)
fugaga=models.TextField()
みたいなコードでHoge().hogegege()みたいにしたものをキャッシュしようとすると上手くいかなかった。今後こんなコード書かないようにメモ