0

我需要订单/购买,让例如像正确使用重复属性?

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

许多项目是重复的关键字法律和在这里正确的方式使用?我的其他选择是什么?我应该用重复的stringproperty来代替吗?

item_ids = model.StringProperty(repeated=True) 或重复KeyProperties? 感谢

回答

3

有一个ListProperty

class Purchase(db.Model): 
    items = db.ListProperty(db.Key) 

它的使用方式与Python列表:

p = Purchase() 
p.items = [item1.key(), item2.key(), item3.key()] 

在查询但它看起来像一个单值字段。 ListProperty的每个值都单独编制索引。下面

查询将返回包含了item1所有购买:

Purchase.all().filter('items =', item1.key()) 

查询下面将返回包含所有购买或者item1item2

Purchase.all().wilter('items IN', [item1.key(), item2.key()]) 

如果你永远都需要索引更多比一个ListProperty不要忘记熟悉你的自我exploding-indexes

+4

嗨,尼克。 :-)混淆似乎在NDB和db之间。在NDB中,您使用repeat = True,而在db中使用ListProperty。 – 2012-01-30 01:19:59

+0

谢谢你的回答和评论。对于我的模型来说最自然的将是一个重复的Keyproperty,我会尝试它的工作原理,因为我喜欢NDB使用键和清晰语法的方式。 – 2012-01-30 05:45:36

+0

我甚至不知道'ndb'。非常感谢您的评论! – Ski 2012-01-30 07:57:12