我運行一個小型視頻遊戲。每個玩家都有一個包含各種屬性的賬戶模型。Google App Engine。 TextProperty重置爲「」
我最近添加了一個TextProperty來跟蹤玩家徽章。這些只是一個ASCII字符,在被授予後會附加到account.badges屬性中。
由於正確的是新的,大多數帳戶模型沒有此屬性。在整個網站約3的地方,我有一些代碼,看起來像這樣
if not player.badges:
player.badges = ""
player.badges += "A"
player.put_memcache()
player.put()
出於某種原因,球員徽章的一個弟妹重置爲「」(空字符串)。我不能爲我的生活制定出如何或爲什麼。
我以前沒有用過TextProperties。有沒有一些奇怪的行爲,我不明白?
TextProperties與memcache不兼容嗎?
該帳戶沒有重置爲某個舊狀態,因爲其他屬性似乎正在正確存儲值。它只是這一個TextProperty。
無論如何,我很困惑,並會讚賞一些新的想法,這將幫助我追蹤這個問題。
問題答案
徽章屬性爲剛剛定義這樣
class Account(db.Model):
badges = db.TextProperty()
email = db.StringProperty()
alias = db.StringProperty()
avatar = db.IntegerProperty()
put_memchche就位於內存緩存設置的包裝。
def put_memchche(self):
memcache.set("account" + self.key().name(), self)
你如何定義徽章屬性? put_memcache做什麼?另外我認爲你不需要if部分,如果你將默認值定義爲「」 – marcadian
不知道發生了什麼(afaict,你做得對),但也許你可以通過添加日誌記錄來幫助你自己弄清楚。導入日誌; logging.debug('這會出現在你的日誌中)。 – allyourcode
感謝Marcadian,我會添加一個默認值並刪除ifs。謝謝allyourcode。我確實在這個地方做了很多日誌記錄,我可能會在這個玩家帳戶附近添加一些特殊日誌。 –