从内部加载 MongoEngine 文档 class
Load MongoEngine document from inside class
有没有办法使用 MongoEngine 从 class 中加载 MongoDB 文档?我目前正在使用加载程序功能:
def load_user(username):
user = User.objects(username=username).first()
return user
这行得通,但如果相关代码能全部包含在class:
中就好了
class User(mongoengine.Document):
username = mongoengine.StringField()
full_name = mongoengine.StringField()
email = mongoengine.StringField()
meta = {
'db_alias': 'default',
'collection': 'users'
}
def load(self, username)
self = User.objects(username=username).first()
def save(self, **kwargs):
super(User, self).save(**kwargs)
显然,分配给 self
是行不通的,因为它只是替换了变量 self
。此外,如果我只是将所有 class 属性替换为加载到单独变量的属性,那么如果我尝试保存它,我将创建一个新文档,因此这似乎也不是一个可行的解决方案。
有什么办法可以实现吗?
您可以使用class方法
@classmethod
def load(cls, username):
return cls.objects(username=username).first()
然后就可以直接从class使用了:
User.load('some_user')
有没有办法使用 MongoEngine 从 class 中加载 MongoDB 文档?我目前正在使用加载程序功能:
def load_user(username):
user = User.objects(username=username).first()
return user
这行得通,但如果相关代码能全部包含在class:
中就好了class User(mongoengine.Document):
username = mongoengine.StringField()
full_name = mongoengine.StringField()
email = mongoengine.StringField()
meta = {
'db_alias': 'default',
'collection': 'users'
}
def load(self, username)
self = User.objects(username=username).first()
def save(self, **kwargs):
super(User, self).save(**kwargs)
显然,分配给 self
是行不通的,因为它只是替换了变量 self
。此外,如果我只是将所有 class 属性替换为加载到单独变量的属性,那么如果我尝试保存它,我将创建一个新文档,因此这似乎也不是一个可行的解决方案。
有什么办法可以实现吗?
您可以使用class方法
@classmethod
def load(cls, username):
return cls.objects(username=username).first()
然后就可以直接从class使用了:
User.load('some_user')