【问题标题】:Load MongoEngine document from inside class从类内部加载 MongoEngine 文档
【发布时间】:2020-06-05 21:47:04
【问题描述】:

有没有办法使用 MongoEngine 从类中加载 MongoDB 文档?我目前正在使用加载器功能:

def load_user(username):
    user = User.objects(username=username).first()
    return user

这可行,但如果相关代码都可以包含在类中,那就太好了:

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。此外,如果我只是将所有类属性替换为加载到单独变量中的属性,如果我试图保存它,我将创建一个新文档,所以这似乎也不是一个可行的解决方案。

有什么办法可以做到吗?

【问题讨论】:

    标签: python mongodb mongoengine


    【解决方案1】:

    你可以使用类方法

        @classmethod
        def load(cls, username):
            return cls.objects(username=username).first()
    

    然后你可以直接从类中使用它:

    User.load('some_user')
    

    【讨论】:

    • 哇,好简单!非常感谢!!
    猜你喜欢
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多