这是我的班级:

class Presentation(db.Document):
    title = db.StringField(max_length=120, required=True)
    author = db.StringField (required=True)
    pages = db.DocumentField(Page, required=False)
    tags = db.StringField(max_length=120, required=False)
    id = db.IntField(required=True)
    currentPage = db.IntField()
def __str__(self):
     return 'Title:%s author:%s  id:%d currentPage:%d' % ( self.title, self.author,self.id,self.currentPage)

当我从Mongo Shell中使用它时,一切似乎都很好:

db.presentation.find({id:2})

{ "_id" : ObjectId("4e9cdddd0ad5c97ee6000000"), 
"author" : "admin", "currentPage" : 3, "id" : 2, 
"pages" : { "content" : "", "pagenum" : 0 }, "title" : "dd" }

但是当我使用Mongoalchemy时,

p = query.filter(presention.id == 2).first()

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build/bdist.macosx-10.7-intel/egg/mongoalchemy/query.py", line 136, in first
File "build/bdist.macosx-10.7-intel/egg/mongoalchemy/query.py", line 388, in next
File "build/bdist.macosx-10.7-intel/egg/mongoalchemy/document.py", line 318, in unwrap
File "build/bdist.macosx-10.7-intel/egg/mongoalchemy/document.py", line 152, in __init__

mongoalchemy.exceptions.ExtraValueException: currentPage
有帮助吗?

解决方案

我读了 例外的文档字符串 似乎对于Mongoalchemy,定义的模型未注册CurturnPage作为属性 Presentation 文档,但是在代码中,您复制了类定义的粘贴定义属性。

如果您复制粘贴的类是您在项目中定义的类,请尝试在项目中删除.pyc文件并重新运行应用程序。

顺便一提 currentPage 可变名称不遵循 pep8 命名约定。

其他提示

对于其他任何具有ExtravalueException的人,如果在类定义中放置额外的逗号,也可以看到此错误。例如,如果您有:

...
pages = db.DocumentField(Page, required=False),
tags = db.StringField(max_length=120, required=False)
...

尝试使用页面或标签会带来跨越exception。

我学会了自己的痛苦。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top