Proč se o ExtraValueException z mongoalchemy?

hlasů
3

Tady je moje třída:

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)

Když jsem ji použít z Mongo shell, vše vypadá dobře:

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

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

ale když jsem pomocí MongoAlchemy,

p = query.filter (Presentation.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
Položena 18/10/2011 v 04:08
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Čtu doc řetězec výjimky a Vypadá to, že pro mongoalchemy vzorem vymezeným nezaregistruje currentPage jako atribut Presentationdokumentu, ale v kódu, který kopírování vložili definice třídy definovat atribut.

V případě, že třída, kterou kopírování vložili je třída, která jste definovali v projektu, se snaží odstranit .pyc souborů ve vašem projektu a znovu spusťte aplikaci.

Mimochodem currentPagenázev proměnné nevyplývá PEP8 konvence.

Odpovězeno 18/10/2011 v 11:36
zdroj uživatelem

hlasů
2

Pro nikoho jiného s ExtraValueException, můžete také vidět tuto chybu, pokud si dát další čárku v definici třídy. Například pokud jste měl:

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

Pokoušíte se použít buď stránky nebo štítky by dát ExtraValueException.

dozvěděl jsem se, aby mé vlastní bolesti.

Odpovězeno 12/06/2012 v 15:36
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more