如何使用ListProperty(数字列表中的项必须都是Key实例)

时间:2012-03-22 17:16:08

标签: python google-app-engine

第一个模型

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

第二个模型

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

A模型已成功保存。

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

BadValueError:数字列表中的项目必须都是Key实例

b = B()
b.name = 'test'
b.numbers = [90]
b.put()
你能帮帮忙吗?非常感谢。

2 个答案:

答案 0 :(得分:3)

编辑(基于OP评论):如果您要插入db.Key,则需要提供一个。
调用put()会返回一个键,因此您可以使用它,例如:

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

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

OP澄清前的旧答案:

使用db.ListProperty(db.Key),您说您需要db.Key个实例的列表 如果你想要整数,请按照以下方式声明你的模型:

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

答案 1 :(得分: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()