Учитывая модель Django Likeo:
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__
?).
Или лучший способ сделать это - иметь тип настраиваемого поля ?
Я уверен, что я видел пример почти точно этого, но, увы, я не смог найти его в последнее время.
Спасибо за чтение & ndash; и для любого ввода вы можете предоставить.