Flask-MongoEngine AttributeError:' QuerySet'对象没有属性' get_or_404'

时间:2017-01-09 05:25:27

标签: python flask mongoengine flask-mongoengine

我按照Flask-MongoEngine教程使用以下代码:

tag = Tag.objects.get_or_404(slug=tag_slug)

它引发了一个AttriubteError:

AttributeError: 'QuerySet' object has no attribute 'get_or_404'

我的pip冻结:

mongoengine==0.11.0
pymongo==3.4.0
Flask==0.12
flask-mongoengine==0.8.2
Flask-WTF==0.14

4 个答案:

答案 0 :(得分:1)

只需从冻结点中移除‍ mongoengine,然后在模型定义中,从Document(而不是flask_mongoengine)导入mongoengine

答案 1 :(得分:0)

尝试tag = Tag.objects().get_or_404(slug=tag_slug)

答案 2 :(得分:0)

您需要将BaseQuerySet添加为“queryset_class”

WRONG:

import mongoengine
from mongoengine import Document

db = mongoengine

class Tag(db.Document):
    field = db.StringField()

    meta = { 'collection': 'tags' }

RIGHT:

import mongoengine
from flask_mongoengine import BaseQuerySet
from mongoengine import Document

db = mongoengine

class Tag(db.Document):
    field = db.StringField()

    meta = { 'collection': 'tags', 'queryset_class': BaseQuerySet}

答案 3 :(得分:0)

您可以将Tag类附加到模型方案吗?

也许您的模型文件有错误。

您可以创建一个包含Tag类的模型文件,以测试get_or_404方法现在是否可以使用。

model.py

from mongoengine import *

class Tag(Document):
  slug = StringField()
  name = StringField()

  ....
  other attributes

现在也许您可以这样做:

def slug(tag_slug):
  tag = Tag.objects.get_or_404(slug=tag_slug)

尝试一下,您告诉我们。