如何在Google App Engine (Python) NDB/Datastore中从子实体查询父实体?

12

我有一个非常基础的问题,我想知道在App Engine Python中从子实体访问父实体的属性值的直接且正确的方式。例如,我有以下模型架构。我正在使用Python 2.7和NDB。

class Gallery(ndb.Model):
    category    = ndb.StringProperty()
    title       = ndb.StringProperty()
    subtitle    = ndb.StringProperty()

class Image(ndb.Model):
    blob_key    = ndb.BlobKeyProperty()
    title       = ndb.StringProperty()
    gallery     = ndb.StringProperty()
    is_slider   = ndb.StringProperty()

在这里,“Gallery”是“Image”的父级。它们形成一个实体组合的展览=>画廊=>图像。 我想显示来自Image模型的图像,以及它们所属的画廊详细信息。我可以从父实体(Gallery中的Image)访问子实体,但反过来却不行。我不想在Gallery模型中使用Image模型作为StructuredProperty。大多数情况下,我基于其他标志而不是画廊(例如,如果is_slider =“yes”,则生成幻灯片演示文稿时直接从所有图像中查询Image),但仍然要显示相关画廊的信息,因此我想知道如何访问父数据。

我认为这是一个非常通用的问题,并寻求一个简单的解决方案,比如直接访问父级,而不是返回到实体组的顶部并使用一些复杂的逻辑查询Gallery模型。感谢任何帮助。

1个回答

31

谢谢Mjibson。这正是我所缺少的。 - fusionstrings
如何在模板循环中使用它(当循环在图像实例上时)?我正在使用Jinja 2。 - fusionstrings
1
如果您有问题,请提出问题,而不要在评论中发布问题。 - mjibson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接