App Engine将项目附加到ListProperty

时间:2012-01-28 23:02:21

标签: python google-app-engine google-cloud-datastore

我想我已经失去了理智,为什么不做以下工作?

class Parent(db.Model):
    childrenKeys = db.ListProperty(str,indexed=False,default=None)

p = Parent.get_or_insert(key_name='somekey')
p.childrenKeys = p.childrenKeys.append('newchildkey')
p.put()

我收到此错误:

BadValueError: Property childrenKeys is required

医生说:

  

默认是list属性的默认值。如果没有,那么   default是一个空列表。 list属性可以定义自定义   验证器禁止空列表。

所以我看到它的方式,我得到默认值(一个空列表)并为其添加一个新值并保存它。

2 个答案:

答案 0 :(得分:8)

您应该删除p.childrenKeys作业:

class Parent(db.Model):
    childrenKeys = db.ListProperty(str,indexed=False,default=[])

p = Parent.get_or_insert('somekey')
p.childrenKeys.append('newchkey')
p.put()

答案 1 :(得分:5)

替换它:

p.childrenKeys = p.childrenKeys.append('newchildkey')

用这个:

p.childrenKeys.append('newchildkey')

append()返回None,无法将其分配给p.childrenKeys