我正在尝试将文档的'对象'属性更改为'查询'。因为人们正在查询数据库,所以它更加直观。喜欢;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 >
有人可以提供解决方案吗?
定义一个抽象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'>
。