1

我遵循了 Flask-MongoEngine 教程并使用以下代码:

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

它引发了一个 AttriubteError:

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

我的点冻结:

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

4 回答 4

1

只需从您的 pip freeze 和模型定义中删除 ‍<code>mongoengine 导入Documentfrom flask_mongoengine,而不是 from mongoengine

于 2020-01-10T10:36:35.953 回答
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)

试试看,你告诉我们。

于 2019-01-11T11:46:02.640 回答
0

您需要将 BaseQuerySet 添加为“queryset_class”

错误的:

import mongoengine
from mongoengine import Document

db = mongoengine

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

    meta = { 'collection': 'tags' }

正确的:

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}
于 2017-08-22T18:19:23.987 回答
0

像这样试试tag = Tag.objects().get_or_404(slug=tag_slug)

于 2017-01-11T08:57:33.310 回答