0

我在为最后两个(传感器/读数)建模键/父母时遇到问题。我想为每个人保留祖先路径。问题是我只能访问层次结构中的最后一个 id。这是否需要我每次都进行复杂的查询,还是有更简单的方法?

无论如何,我试图保持的层次结构是:

主页 -> 区域 -> 传感器 -> 读数

为了测试它,我制作了一些表格。每个表单的选择字段是这样完成的:

form.zonekey.choices = [ (h.key.id(),h.sensortype)for h in Sensor.query()]

我意识到使用 id/key 是不安全的,因为它以 html 形式显示,但我不知道如何做到这一点,除了一路散列 id。

我的问题是我不能使用从表单中选择的上述 ID 来查找区域密钥和父项,因为密钥由区域和主页密钥组成,我不知道它们是什么。通过以下方式查找区域

ndb.Key(Zone, ID) 似乎不起作用(因为密钥实际上包括 Homekey 而我不知道那里)。

我唯一的选择是做这样的查询:

Zone.query().filter(Zone.zname == 'zonetest1')

并获取它的密钥并将其用作层次结构中下一级(传感器)的父级。

这似乎是一种昂贵且复杂的方式。有没有更简单、更优雅的方法来做到这一点?

这是我的测试和结果的图片。

我创建的区域表格

我创建的传感器表单(显示选择字段)

我创建的阅读表格

我在本地测试的输入列表。 显示主要功能

4

0 回答 0