Django Pymongo查询正常,但Mongoengine不查询任何内容

Django Pymongo查询正常,但Mongoengine不查询任何内容,django,mongodb,pymongo,mongoengine,Django,Mongodb,Pymongo,Mongoengine,非常奇怪:Pymongo查询正常,但Mongoengine什么都不查询: class VkWallPostListView(ListView): model = VkWallPost context_object_name = "vk_list" def get_template_names(self): return ["blog/vk_list.html"] def get_queryset(self): wallposts

非常奇怪:Pymongo查询正常,但Mongoengine什么都不查询:

class VkWallPostListView(ListView):
    model = VkWallPost
    context_object_name = "vk_list"

    def get_template_names(self):
        return ["blog/vk_list.html"]

    def get_queryset(self):
        wallposts = VkWallPost.objects
        if 'all_posts' not in self.request.GET:
            #wallposts = wallposts.filter(text='S')
            wallposts = VkWallPost._get_collection().find({"text":'S'})
        tag = self.request.GET.get('tag', None)
        if tag:
            wallposts = wallposts.filter(tags=tag)

        return wallposts 
选项
wallposts=VkWallPost.\u get\u collection().find({“text”:})
返回对象,但相同的Mongoengine
wallposts=wallposts.filter(text='S')
不起作用-结果为空,没有错误!
更多:我有一个查询到另一个集合的类-Mongoengine正常工作。

看起来您的VkWallPostListView没有直接从
Mongoengine.Document继承。我最近也遇到了这种情况,当数据库模式的同一模型从基本
文档
类以外的其他对象继承时,在查询时它没有返回任何内容。事实证明,mongoengine在子类文档中添加了一个名为
\u cls
的隐藏字段,并在查询时自动检查该字段

例如:

如果我有一个类文本持有者,它是我的类文章的基础

class TextHolder(mongoengine.Document):
    text = mongoengine.StringField()
    meta = { 'allow_inheritance' : True,
             'abstract' : True }

class Post(TextHolder):
    user = mongoengine.ReferenceField(User)
如果我试图按数据库中已经存在的帖子进行查询,那么他们的文档中将不会定义
\u cls
字段。因此,查询不符合此标准的文档的方法就是这样做

Post.objects(user=user_to_query_by, class_check=False)

这将为我提供忽略
\u cls
字段的所有对象,并且不检查是否与当前模型的类名匹配。

如果VkWallPost是您的mongoengine模型,则可以使用VkWallPost.objects(text='s')来过滤我们的objects@Rajsubit-可能您错过了这一行wallposts=VkWallPost.objects-完全相同的已经完成我有相同的问题,并将
meta={'allow_heritation':False}
添加到子类(您的
Post
)中,之后一切都按预期工作(我不再需要指定
class\u check=False
)。