Запуск кода, когда mongoengine загружает документ
Мы пытаемся запустить код, который изменяет документ при его загрузке, как часть обслуживания схемы. У нас есть такой документ, как
from mongoengine import Document
from mongoengine.fields import IntField, StringField
class User(Document):
version = IntField(default=0)
name = StringField()
Экземпляры пользователя создаются с версией =1 и сохраняются.
Позже мы изменим этот класс следующим образом:
class User(Document):
version = IntField(default=0)
name = StringField(max_length=20)
Некоторые из документов версии 1 теперь должны быть усечены:
def upgrade_1_to_2(self):
self.name = self.name[:20]
Мы хотим автоматически запускать эту функцию всякий раз, когда пользователь извлекается из базы данных, и только если версия == 1. (Будущие обновления будут upgrade_2_to_3() и т. Д.)
Где в этом API можно разместить код, который запускается при получении документа?
1 ответ
Решение
Похоже, это хороший кандидат на post_init
сигнал, и вы можете сделать проверку там.