如何在Google App Engine中使用ListStringProperty选择实体?

时间:2013-12-03 00:56:35

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

我想使用ListStringProperty做两个操作如何选择一个并由所有人选择?

让我解释一下我有这样的数据:

Something(db.Model):
  tags: StringListProperty()

Something(tag = ['black', 'high']).put()
Something(tag = ['black', 'low']).put()
Something(tag = ['white', 'high']).put()
Something(tag = ['white', 'low']).put()

我想选择所有Something为'high'或'black' - 如何使用查询进行操作?

我想选择所有Something为'高'和'黑' - 如何使用查询?

Something.all()。filter('tag','black')。filter('tag','high')for和?

如何做Something.all()。filter('tag','black')+ Something.all()。filter('tag','high')?

2 个答案:

答案 0 :(得分:1)

AND:Something.all()。filter('tag =','black')。filter('tag =','high')

OR:Something.all()。filter('tag IN',['black','high'])

答案 1 :(得分:0)

我认为并且不可能,或者肯定是可能的。只需做一些像Something.all()。filter('tag','black')。filter('tag','high'),在这里阅读更多https://developers.google.com/appengine/docs/python/datastore/queries

如果你的列表只包含很少的元素,而AND运算符只包含少数元素,你可以通过附加元素来实现技巧。例如,如果您的AND操作仅适用于2个元素,则可以存储“blackhigh”,“blacklow”,“whitehigh”,“whitelow”等,基本上存储nCk元素,其中K是AND运算符的操作数个数