将文档 'objects' 属性 更改为 'query'
Change Document 'objects' property to 'query'
我正在尝试将文档 'objects' 属性 更改为 'query'。它更直观,因为一个人正在查询数据库。
喜欢;
Collection.query.find()
代替;
Collection.objects.find()
我试过为我的 Collection 模型设置一个查询属性,例如;
class Collection(Document):
def __setattr__(self, key, objects):
self.__dict__['query'] = self.objects
但是在检查类型时,它 returns 是 QueryManager 的 class 而不是 Queryset 之类的;
>>>print(type(Collection.query))
<'class' mongoengine.queryset.queryset.QueryManager >
而不是;
>>>print(type(Collection.query))
<'class' mongoengine.queryset.queryset.Queryset >
有人可以提供解决方案吗?
定义一个抽象文档 class 并在其中使用 queryset_manager 包装器定义自定义查询集管理器。继承摘要 class 作为所有其他后续文档 class 的基础 class。
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.*
。
显示类型将按预期 return <class 'mongoengine.queryset.queryset.Queryset'>
。
我正在尝试将文档 'objects' 属性 更改为 'query'。它更直观,因为一个人正在查询数据库。
喜欢;
Collection.query.find()
代替;
Collection.objects.find()
我试过为我的 Collection 模型设置一个查询属性,例如;
class Collection(Document):
def __setattr__(self, key, objects):
self.__dict__['query'] = self.objects
但是在检查类型时,它 returns 是 QueryManager 的 class 而不是 Queryset 之类的;
>>>print(type(Collection.query))
<'class' mongoengine.queryset.queryset.QueryManager >
而不是;
>>>print(type(Collection.query))
<'class' mongoengine.queryset.queryset.Queryset >
有人可以提供解决方案吗?
定义一个抽象文档 class 并在其中使用 queryset_manager 包装器定义自定义查询集管理器。继承摘要 class 作为所有其他后续文档 class 的基础 class。
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.*
。
显示类型将按预期 return <class 'mongoengine.queryset.queryset.Queryset'>
。