GAE NDB访问结构化重复列表中的子实例(字段)

时间:2014-04-10 08:12:59

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

我在访问结构化列表中的实例时遇到困难 以下是我的结构清单:

class FavFruits(ndb.Model):
    fruit    = ndb.StringProperty()
    score    = ndb.IntegerProperty()
    comment  = ndb.TextProperty()

class UserProfile(ndb.Model):
    uid            = ndb.StringProperty(required=True)
    password       = ndb.StringProperty(required=True)
    firstName      = ndb.StringProperty(required=True)
    favFruits      = ndb.StructuredProperty(FavFruits, repeated=True)

我想在score实体下显示FavFruits

我没试过UserProfile.favFruits.score

我也尝试了UserProfile.favFruits[index].score,但是现在需要循环,我想避免它。

最终,我想做以下逻辑:

  1. 如果UserProfile.uid == userEntering,则用户输入水果名称

  2. 如果UserProfile.favFruits.fruit == fruitName(用户输入),则显示用户指定的UserProfile.favFruits.fruit的UserProfile.favFruits.score和UserProfile.favFruits.comments。

  3. 最后,我想显示用户输入的所有水果/分数。比如,用户输入" apple"和"橙"对于水果名称,我想循环,例如(沿着这一行):

  4. for x in fruitNames print x print UserProfile.favFruits.score.query(UserProfile.favFruits.fruit == x)

    这可能吗?看似琐碎的任务,但我无法弄清楚这一点..

    提前谢谢!

1 个答案:

答案 0 :(得分:3)

您的要求是矛盾的。如果您不想循环,请不要使用repeated=True。但是,您将无法为每个实体存储多个。如果没有循环或索引,就没有可能有多种方法。