给定一个 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__
?)。
或者更好的方法是使用自定义字段类型?
我确信我已经看到了一个几乎完全一样的例子,但可惜我最近没能找到它。
感谢您阅读 - 以及您可能提供的任何意见。