次のような Django モデルが与えられた場合:
from django.db import models
class MyModel(models.Model):
textfield = models.TextField()
次のようなワークフローを使用して、プロパティにアクセスしたとき (つまり、ロードしていないとき) に自動的に圧縮textfield
(例: を使用zlib
) して解凍するにはどうすればよいですか?save()
textfield
m = MyModel()
textfield = "Hello, world, how are you?"
m.save() # compress textfield on save
m.textfield # no decompression
id = m.id()
m = MyModel.get(pk=id) # textfield still compressed
m.textfield # textfield decompressed
オーバーロードすると思いがちですがMyModel.save
、保存時に要素をインプレースで変更するパターンがわかりません。また、フィールドがアクセスされたときにDjangoで解凍する最良の方法もわかりません(オーバーロード__getattr__
?)。
または、これを行うより良い方法は、カスタム フィールド タイプを使用することでしょうか?
ほぼ正確にこれの例を見たことがあると確信していますが、残念ながら最近は見つけることができませんでした.
読んでいただき、ありがとうございます。また、ご意見をお寄せいただきありがとうございます。