2012-03-22 6 views
1

最初のモデルはどうすれば

class A(db.Model): 
     number = db.IntgerProperty() 

class B(db.Model): 
    name = db.StringProperty() 
    numbers = db.ListProperty(db.Key) 

Aモデルが正常に保存されて第二のモデル(すべてのキーのインスタンスでなければならない番号リストの項目)ListPropertyを使用してください。

a = A() 
a.number = 90 
a.put() 

BadValueError:数値のリストの項目は、すべてのキーのインスタンス

b = B() 
b.name = 'test' 
b.numbers = [90] 
b.put() 

でなければならない、あなたは助けてくださいますか?どうもありがとう。

答えて

3

編集(OPコメントに基づいて):db.Keyを挿入する場合は、1つを入力する必要があります。あなたはそれを使用することができますので、put()リターンキーを呼び出す
、例えば:OPの明確化の前に

a = A() 
the_key = a.put() 

b = B() 
b.name = 'test' 
b.numbers = [the_key] 
b.put() 

旧答え:db.ListProperty(db.Key)

はあなたがdb.Keyインスタンスのリストが欲しいと言っています。あなたが整数をしたい場合
、このようなあなたのモデルを宣言:

class B(db.Model): 
    name = db.StringProperty() 
    numbers = db.ListProperty(int) 
          ^^^ 
+0

感謝を。しかし、私は 'db.Key'が欲しいです。 –

+0

@no_freedom:明確化のためにありがとう。編集された答え。 – bernie

0

a = A() 
a.number = 90 
a_key = a.put() # returns the Key object of a's datastore entity 

B:迅速な返信用

b = B() 
b.name = 'test' 
b.numbers = [a_key] # store a Key object in the ListProperty of b 
b.put() 
関連する問題