Существует ListProperty :
class Purchase(db.Model):
items = db.ListProperty(db.Key)
Используется как список питонов:
p = Purchase()
p.items = [item1.key(), item2.key(), item3.key()]
Однако в запросах это выглядит как однозначное поле. Каждое значение ListProperty индексируется отдельно.
Запрос ниже вернет все покупки, которые содержат item1
:
Purchase.all().filter('items =', item1.key())
Запрос ниже вернет все покупки, которые содержат item1
или item2
:
Purchase.all().wilter('items IN', [item1.key(), item2.key()])
Если вам когда-нибудь понадобится проиндексировать более одного ListProperty, не забудьте ознакомиться с exploding-indexes .