2017-09-04 11 views
0

に入る。これは私のGAEデータストアである:不足している属性は、データストアのオブジェクト

class Search(ndb.Model): 
    city = ndb.StringProperty() 
    counter = ndb.IntegerProperty(indexed = True) 
    date = ndb.DateTimeProperty(auto_now_add=True) 

私はこのコードの一部を実行すると:

keys = Search.query(Search.city == city).fetch() 

if (len(keys)==0): 
    luogo = Search(city = city, counter = 1) 
    luogo.put() 
else: 
    for key in keys: 
     luogo_1 = key.get() 
     luogo_1.counter = luogo_1.counter+1 
     luogo_1.put() 

私の端末は、オブジェクトの検索に欠けているが、

を取得する属性のことを言います

あなたはその理由を知っていますか?

答えて

1

keys = Search.query(Search.city == city).fetch()

を実行すると、リストをフェッチモデルインスタンスインスタンスがgetメソッドを持っていないので、0

ので

for key in keys: 
    luogo_1 = key.get() 

は失敗します。

あなたは実行する必要があります。

keys = Search.query(Search.city == city).fetch(keys_only=True)

のキーのリストを取得、またはインスタンスではなく、キーのリストとしてkeysを扱い、key.get()コールを省略します。

+0

ありがとうございます –

+0

しかし、エンティティをフェッチすることを意図している場合は、これはやや冗長です。 'Search.query(Search.city == city).fetch()'の結果はエンティティのリストなので、キーを使用してフェッチする必要はありません。 –

1

はたぶんkeyオブジェクトがget()方法がないので:

luogo_1 = key.get() 

使用のpython dir()機能を、それは私に多くのことができます

関連する問題