在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)
如何仅在 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)