質問

これが私のクラスです:

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の場合、定義されたモデルがcurrentPageをの属性として登録していないようです Presentation ドキュメントですが、コードでは、クラス定義が属性を定義したコピーをコピーしました。

コピーしたクラスがプロジェクトで定義したクラスである場合、プロジェクトの.Pycファイルを削除してアプリケーションを再実行してみてください。

ところで currentPage 変数名は続きません PEP8 命名規則。

他のヒント

AxtravalueExceptionを持っている他の人の場合、クラスの定義に追加のコンマを入れた場合、このエラーも確認できます。たとえば、持っていた場合:

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

ページまたはタグのいずれかを使用しようとすると、極度のExceptionが表示されます。

これは私自身の痛みを学びました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top