私は小さなビデオゲームを運営しています。各プレーヤーには、さまざまなプロパティを持つアカウント モデルがあります。
最近、プレイヤー バッジを追跡する TextProperty を追加しました。これらは、付与されたときに account.badges プロパティに追加される単なる ASCII 文字です。
は新しいため、ほとんどのアカウント モデルにはこのプロパティがありません。サイト全体の約 3 か所に、次のようなコードがあります。
if not player.badges:
player.badges = ""
player.badges += "A"
player.put_memcache()
player.put()
何らかの理由で、プレイヤー バッジの 1 つが "" (空の文字列) にリセットされ続けます。私は私の人生のために、どのように、またはなぜ解決することはできません.
以前に TextProperties を使用したことはありません。私が理解できない奇妙な動作はありますか?
TextProperties は memcache とうまく機能しませんか?
他のプロパティが値を正しく保存しているように見えるため、アカウントは古い状態にリセットされていません。この 1 つの TextProperty だけです。
とにかく、私は混乱しており、問題を追跡するのに役立ついくつかの新鮮なアイデアをいただければ幸いです.
質問の回答
Badges プロパティは次のように定義されています
class Account(db.Model):
badges = db.TextProperty()
email = db.StringProperty()
alias = db.StringProperty()
avatar = db.IntegerProperty()
put_memchche は、memcache セットの単なるラッパーです。
def put_memchche(self):
memcache.set("account" + self.key().name(), self)