【发布时间】:2012-07-16 19:21:14
【问题描述】:
我是使用 Google App Engine 开发网络应用程序的新手。
我想检查我的数据存储中的实体为列表属性设置了空值 (db.ListProperty)。但是,当我尝试对照entity.list GAE 检查任何内容时,会出现错误:
'super' object has no attribute 'list'.
经过一番搜索,我在this SO question 中看到,为 GAE 数据存储实体的列表属性设置一个空值等同于根本不设置该属性。这解释了我的错误。
所以我需要匹配数据存储区中根本没有设置任何list 属性的实体。查看 GAE 文档,我仍然没有找到任何方法可以让我检查实体是否具有特定的属性集。
注意:我不必对 GQL 执行此操作。我可以使用 GQL 检索所有实体,然后使用 python 检查。但是 GQL 解决方案也可以。
【问题讨论】:
-
你能发布你的模型吗?同样根据文档'ListProperty 的值不能为无。但是,它可以是一个空列表。为默认参数指定 None 时(或未指定默认参数时),属性的默认值为空列表。我试过了,它确实将listproperty值创建为[]。另一方面,您无法查询列表是否相等,因此唯一的解决方案是查询所有元素并在 python 中过滤它们。
-
是的,空值是指空列表。
-
我希望实体中有一个空的“列表”元素。我真的不明白为什么你根本没有列表元素,除非实体最初是由没有列表元素的模型创建的。
-
如果您点击我的问题中的链接,您会看到一个空的列表元素根本没有存储在 gae 数据存储中,即使模型有一个列表元素,因为实体的方式被存储。完全不设置任何属性就好了。
标签: python database google-app-engine google-cloud-datastore gql