2012-05-31

App Engine の NDB に StringListProperty がないっ

Google App Engine で新しくアプリをつくることになったので、調子にのって ndb を使おうとして、いきなり泣きを見ました。
class Foo(db.Model):
    def tags = db.StringListProperty()
というような、文字列配列を持つような StringListProperty が、ndb にはない! 焦りつつぐぐったら、すぐに見つかりました。repeated というキーワード引数つきで定義すればよいみたいです。
class Foo(ndb.Model):
    def tags = db.StringProperty(repeated=True)
ある値を含むエンティティをクエリするには、以下のようにします。
Foo.query(Foo.tags == 'python')
複数の値のうち、いずれかを持つエンティティをクエリするには、以下のようにします。
Foo.query(Foo.tags.IN(['python','ruby']))
Foo.query(ndb.query.OR(Foo.tags == 'python', Foo.tags == 'ruby'))

参考: