0

最後の 2 つ (センサー/読み取り値) のキー/親のモデリングに問題があります。それぞれの祖先パスを保持したいと思います。問題は、階層内の最後の ID にしかアクセスできないことです。毎回複雑なクエリを実行する必要がありますか、それとももっと簡単な方法がありますか?

いずれにせよ、私が維持しようとしている階層は次のとおりです。

ホーム -> ゾーン -> センサー -> 測定値

テストするために、いくつかのフォームを作成しました。各フォームの選択フィールドは次のように行われます。

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

ID/キーの使用はhtml形式で表示されるため安全ではないことに気づきましたが、途中でIDをハッシュする以外にこれを行う方法がわかりません。

私の問題は、キーがゾーンキーとホームキーで構成されており、それらが何であるかがわからないため、フォームから選択した上記の ID を使用してゾーンキーと親を検索できないことです。でゾーンを調べる

ndb.Key(Zone, ID) は機能していないようです (キーには実際に Homekey が含まれており、そこにあることがわかりません)。

次のようなクエリを実行する唯一の選択肢は次のとおりです。

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

そのキーを取得し、それを階層内の次のレベル (センサー) の親として使用します。

それは費用がかかり、複雑な方法のようです。これを行うためのより簡単でエレガントな方法はありますか?

これが私のテストと結果の写真です。

私が作ったゾーンフォーム

作成したセンサー フォーム (選択フィールドを表示)

私が作成したリーディングフォーム

ローカルでテストした入力のリスト。 主な機能を表示するには

4

0 に答える 0