[править: с использованием django-1.1.1 ]
Здравствуйте,
Я использую классы django, в которых хранится большой двоичный объект (точнее строка b64), соответствующая значку объекта.
Я сериализую объекты как json для связи с различными внешними клиентами.
Я не хочу показывать чистый значок в виде результата json (но служить им как изображение под определенным URL-адресом), поэтому мое поле значка определяется следующим образом:
icon = models.TextField(null=True, serialize=False)
Но когда приходит время сохранить мой объект, я теряю свою иконку, потому что, очевидно, значение не устанавливается входящим словарем json.
Я бы хотел написать написанное как хак:
class MyIconizedClass(models.Model):
def __init__(self, *args, **kwargs):
if self.pk is not None and self._icon is None:
old_self = MyIconizedClass.object.get(pk=self.pk)
self.icon = old.self.icon
Не очень доволен этим, потому что он будет каждый раз запрашивать в БД, плюс, он будет повторяться бесконечно, если иконка фактически отсутствует.
Другим способом было бы переписать десериализатор.
Есть ли обходной путь, используя внутренние механизмы django?