我按照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
答案 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)
尝试一下,您告诉我们。