如何建模一对多?

时间:2012-04-28 11:15:46

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

我有两个实体,物品和城市。我如何像一对多关系那样建模,以便它表示一个项目可以“拥有”许多城市?我想用ReferenceProperty做它,但它似乎是一个列表,并且没有键AFAIK列表的属性。你能告诉我如何建模以表示这种关系吗?

创建新对象时,如果使用referenceproperty作为集合创建新对象,则可以创建类似一对多的对象:

class ItemLocation(db.Model):   
    reference = db.ReferenceProperty(Item,
            collection_name='matched_cities', verbose_name='Cities')

但这不是我想要的。我想要一个方便的建模,我可以迭代城市的特定项目,即

{% for city in item.matched_cities %}

你能告诉我应该怎么做吗?

谢谢

1 个答案:

答案 0 :(得分:3)

你绝对可以拥有一系列钥匙。将其添加到您的项目模型中:

cities = db.ListProperty(db.Key)

然后,您可以使用

从数据存储中检索这些城市
itemsCities = ItemLocation.get(item.cities)