在mongoengine加载文档时运行代码

时间:2014-07-11 21:27:42

标签: pymongo 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 个答案:

答案 0 :(得分:1)

看起来它是post_init信号的合适人选,您可以在那里进行检查。

请参阅:http://docs.mongoengine.org/guide/signals.html