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

Execute code before creating document in 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'
    }

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

感谢任何帮助。谢谢

您应该使用 MongoEngine's signals - pre_save() sounds like a good fit. There are 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)