在mongoengine中创建文档之前执行代码

时间:2016-12-19 06:10:09

标签: python mongodb mongoengine

只有在mongoengine中创建文档时才能执行某些代码,而不是在更新时。

class Account(Document):
    name = StringField(max_length=80, default=None)
    username = StringField(max_length=60, required=True)
    created_at = DateTimeField(default=datetime.now(), required=True)
    updated_at = DateTimeField(default=datetime.now(), required=True)

    meta = {
        'collection': 'accounts'
    }

现在我想生成随机用户名,并在创建文档之前将其分配给用户名字段。

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

你应该使用其中一个MongoEngine's signals - pre_save()听起来很合适。将different ways附加到信号的事件处理程序,其中之一是:

from mongoengine import signals

class Account(Document):
    # ...

    @classmethod
    def pre_save(cls, sender, document, **kwargs):
        document.username = "random username"

signals.pre_save.connect(Account.pre_save, sender=Account)