从内部加载 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')