5
我正在使用MongoDB和Flask-MongoEngine作爲我的Web應用的ORM組件。MongoEngine的嵌入式文檔問題
我已經構建了用戶文檔模式,像這樣:
from ..core import db
class UserComics(db.EmbeddedDocument):
favorites = db.SortedListField(db.StringField(), default=None)
class UserSettings(db.EmbeddedDocument):
display_favs = db.BooleanField(default=False)
default_cal = db.StringField(default=None)
show_publishers = db.ListField(db.StringField(), default=None)
class UserTokens(db.EmbeddedDocument):
refresh_token = db.StringField(default=None)
access_token = db.StringField(default=None)
expire_time = db.StringField(default=None)
class User(db.Document, UserMixin):
# Save User document to this collection
meta = {'collection': 'users_test'}
userid = db.StringField()
full_name = db.StringField()
first_name = db.StringField()
last_name = db.StringField()
gender = db.StringField()
birthday = db.StringField()
email = db.EmailField()
friends = db.ListField(db.StringField())
date_creation = db.DateTimeField()
last_login = db.DateTimeField()
favorites = db.EmbeddedDocumentField(UserComics)
settings = db.EmbeddedDocumentField(UserSettings)
tokens = db.EmbeddedDocumentField(UserTokens)
然而,當創建這樣一個新用戶(我已經離開了線......):
def create_new_user(resp):
newUser = User()
....
newUser.settings.default_cal = resp['calendar']
....
newUser.save()
return
我跑進入此錯誤:
AttributeError:'NoneType'對象沒有屬性'default_cal'
在我看來,我沒有正確使用MongoEngines嵌入式文檔,但我不知道自己出錯的地方。
任何幫助將不勝感激!
或者默認創建嵌入文檔:'db.EmbeddedDocumentField(UserSettings,default = UserSettings)'。 – tbicr
@tbicr啊,這很好,謝謝,編輯答案。 –
謝謝!這正是我需要知道的。一切都按預期工作! –