Google应用引擎IN过滤器

时间:2013-06-07 21:30:15

标签: python google-app-engine

我使用的是python 2.7,jinja2和google app引擎。

我有一个数据库,其中一个实体是这种形式的字符串:

"test1,test2,test3,test4,test5"

我试图找出一个查询,我将检索其中test1例如字符串中的所有实体。

我尝试了以下其中tags是字符串属性:

category = "test1"
mymodel.gql("WHERE tags in :1", category)

我有这个错误:BadArgumentError: List expected for "IN" filter

我可以想象这是合乎逻辑的,因为我的属性是字符串而不是列表,但是如何更改查询以使其有效?

2 个答案:

答案 0 :(得分:0)

如错误所示,GQL期待列表。尝试将category列入清单:

category = ["test1"]

答案 1 :(得分:0)

您必须将您的属性修改为StringListProperty而不是字符串才能使其生效。

也没有很多其他选择。使用FullText搜索或类似WHoosh https://github.com/tallstreet/Whoosh-AppEngine这样的全文搜索也是您的另一种选择。

我个人会将其更改为StringListProperty。