我们正在尝试运行代码,以便在文档作为架构维护的一部分加载时修改文档。我们有一个文件,如
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中,我可以放置在检索文档时运行的代码吗?
答案 0 :(得分:1)
看起来它是post_init
信号的合适人选,您可以在那里进行检查。