我有以下两种型号:

class Food(db.Model):
      foodname=db.StringProperty()
      cook=db.StringProperty()

class FoodReview(db.Model):
      thereview=db.StringProperty()
      reviews=db.ReferenceProperty(Food,collections_name='thefoodreviews')


我继续创建一个实体:

s=Food(foodname='apple',cook='Alice')`
s.put()


当有人撰写评论时,将执行以下功能:

theentitykey=db.Query(Food,keys_only=True).filter('foodname =','apple').get()
r=FoodReview()
r.reviews=theentitykey #this is the key of the entity retrieved above and stored as a ref property here
r.thereview='someones review' #someone writes a review
r.put()


现在的问题是如何检索这些评论。如果我知道实体的密钥,则可以执行以下操作:

theentityobject=db.get(food-key) # but then the issue is how to know the key
for elem in theentityobject.thefoodreviews:
       print elem.thereview


否则我可以做这样的事情:

theentityobj=db.Query(Food).filter('foodname =','apple').get()


然后如上所述进行迭代,但是以上两种方法正确吗?

最佳答案

如果要获取食物,您总是在做db.Query(Food).filter('foodname =','apple'),那么看来您的食物名就是您的关键...
为什么不只将它用作key_name?

然后,您甚至可以获取评论而无需获取食物本身:

key = db.Key.from_path('food', 'apple')
reviews = FoodReview.all().filter("reviews =", key)

关于python - 一对多关系-Google数据存储区-Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4045001/

10-10 16:30