1

私は単純なNDBモデルを持っています:

from google.appengine.ext import ndb
import logging
from libs import Api

class User(ndb.Model):
    oauth_token = ndb.StringProperty(required=False, indexed=False)

    @classmethod
    def update_data(self):
        logging.info("uid = %s, oauth token = %s" % (self.key, self.oauth_token))
        api = Api.Init(self.oauth_token)

別のファイルtest.pyに、次のコードがあります。

from models import User
from google.appengine.ext import webapp, ndb
import logging

class Test(webapp.RequestHandler):
    def get(self):
        uid = 1
        u = ndb.Key(User, str(uid)).get()
        logging.info("uid = %s, oauth token = %s" % (u.key.string_id(), u.oauth_token))
        u.update_data()

ログの出力は次のとおりです。

INFO     2012-07-22 16:32:42,532 test.py:8] uid = Key('User', '1'), oauth token = xxxxxxxxxxxxxxxxxxx
INFO     2012-07-22 16:32:42,532 user.py:9] uid = ModelKey('__key__'), oath token = StringProperty('oauth_token', indexed=False)

StringProperty('oauth_token', indexed=False)実際のプロパティの値の代わりに取得するのはなぜですか?

4

1 に答える 1

4

update_dataはで装飾されています。これは、 inがインスタンスメソッドではなくUserクラスへの参照@classmethodであることを意味します。削除するだけです。selfupdate_data@classmethod

于 2012-07-22T17:02:53.133 に答える