Правильное использование повторного свойства? - PullRequest
0 голосов
/ 29 января 2012

Мне нужны заказы / покупки, которые позволяют много предметов, например что-то вроде

class Purchase(db.Model):
  '''a completed transaction'''
  item = db.ReferenceProperty(Item, repeated=True))

Допустимо ли повторное ключевое слово и используется ли оно здесь правильно?Какие у меня есть другие варианты?Должен ли я сделать это с помощью повторного свойства строки вместо этого?

item_ids = model.StringProperty(repeated=True) или с повторными свойствами ключа?Спасибо

1 Ответ

3 голосов
/ 30 января 2012

Существует 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...