gpt4 book ai didi

google-app-engine - ListProperty 中没有值的 gqlquery

转载 作者:太空宇宙 更新时间:2023-11-03 15:37:12 25 4
gpt4 key购买 nike

我有这段代码可以找到属性分支为空的所有节点。


nobranches=TreeNode.all()



for tree in nobranches:<br/>
 if tree.branches==[]:

我想找到一种更好、更有效的方法来做到这一点。我不必检索所有 TreeNodes 的方法。我已经尝试过 TreeNode.all().filter(branches=[]) 但这给了我一条消息,“BadValueError('不支持在列表上过滤'”。我怎么能做类似 TreeNode.gql('WHERE branches= :1', []).fetch(100)。我试过了,但我得到一个“BadValueError:不能使用空列表作为属性值;属性是 []”。还有其他有效的方法吗?

顺便说一句,这是 TreeNode 的样子


class TreeNode(db.Model):<br/>
  name = db.StringProperty()<br/>
  branches =db.ListProperty(db.Key)<br/>

最佳答案

您不能使用过滤器执行此操作:正如 Saxon 所说,没有与您要检索的内容匹配的索引行,因此无法检索它。

一个简单的替代方法是存储另一个包含列表中元素数量的属性,并对其进行过滤。 aetycoon是一个包含可能有助于此的计算属性的库:

class TreeNode(db.Model):
name = db.StringProperty()
branches = db.ListProperty(db.Key)
branch_count = aetycoon.DerivedProperty(lambda self: len(self.branches))

关于google-app-engine - ListProperty 中没有值的 gqlquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com