将文档的“对象”属性更改为“查询”

问题描述 投票:0回答:1

我正在尝试将文档的'对象'属性更改为'查询'。因为人们正在查询数据库,所以它更加直观。喜欢;Collection.query.find()代替;Collection.objects.find()我尝试为我的Collection模型设置查询属性,如[

class Collection(Document):
    def __setattr__(self, key, objects):
        self.__dict__['query'] = self.objects

但是在检查类型时,它返回QueryManager的类而不是类似Queryset的类;

>>>print(type(Collection.query))
<'class' mongoengine.queryset.queryset.QueryManager >

而不是;

>>>print(type(Collection.query))
<'class' mongoengine.queryset.queryset.Queryset >

有人可以提供解决方案吗?

django python-3.x mongodb-query mongoengine flask-mongoengine
1个回答
0
投票

定义一个抽象Document类,并在其中使用queryset_manager包装器定义一个自定义QuerySet管理器。继承抽象类作为所有其他后续Document类的基类。

from mongoengine.document import Document
from mongoengine.queryset import queryset_manager

class BaseDocument(Document):
    meta = {'abstract': True}
    @queryset_manager
    def query(self, queryset):
        return queryset

class Foo(BaseDocument):
    ...

要查询,请使用Foo.query.*,这更直观而不是默认的Foo.objects.*。显示类型将按预期返回<class 'mongoengine.queryset.queryset.Queryset'>

© www.soinside.com 2019 - 2024. All rights reserved.