Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何建立一对多模型?_Python_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Python 如何建立一对多模型?

Python 如何建立一对多模型?,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我有两个实体,物品和城市。我如何像一对多关系那样建模,以便它表示一个项目可以“拥有”多个城市?我想用ReferenceProperty来做,但它似乎是一个列表,并且没有键列表的属性。你能告诉我应该如何建模以表示这种关系吗 创建新对象时,如果要创建具有集合referenceproperty的新对象,则可以创建类似于一对多的对象: class ItemLocation(db.Model): reference = db.ReferenceProperty(Item,

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

创建新对象时,如果要创建具有集合referenceproperty的新对象,则可以创建类似于一对多的对象:

class ItemLocation(db.Model):   
    reference = db.ReferenceProperty(Item,
            collection_name='matched_cities', verbose_name='Cities')
但这并不是我想要的。我想要一个方便的模型,在那里我可以为给定的项目迭代城市,即

{%for item.matched_cities%}

你能告诉我怎么做吗


谢谢你

你绝对可以拥有一份钥匙清单。将其添加到您的项目模型:

cities = db.ListProperty(db.Key)
然后,您可以使用从数据存储中检索这些城市

itemsCities = ItemLocation.get(item.cities)

这听起来确实像是一个多对多的关系,因为你说一个项目可以有几个城市,但我猜一个城市也可以有很多项目?