是否可以有效地过滤出没有为Google Apps Engine中的Text Property类型属性设置值的实体?怎么样?

时间:2011-01-11 19:35:23

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

我最近不得不将我的模型的一个属性从类型StringProperty更新为TextProperty,以便克服限制性限制(最多500个字符)。在我意识到我的一些旧查询之前,这不是问题:

  

SomeEntity.gql('WHERE property1!=:1',None)

其中property1是模型中的属性无法工作: - (。

此查询以前有效,它确实帮助我只获取值为property1的实体。

如何在类型为TextProperty

的情况下有效地获得相同的结果

2 个答案:

答案 0 :(得分:1)

您无法在TextProperty上过滤或订购。要实现您想要的功能,请添加一个新的BooleanProperty“has_text”并对其进行过滤。然后,只要更改TextProperty,就必须确保设置BooleanProperty。

此解决方案遵循Google App Engine预先计算您要过滤的所有内容的一般惯例。

答案 1 :(得分:0)

如果您使用的是ndb,那么添加ComputedProperty通常是进行任何查询过滤器无法轻易表达的最佳方式。请注意,在为索引添加新属性之后,必须重新放置每个实体(这适用于之前建议的布尔属性)