2

現在のユーザーに関連付けられた場所のドロップダウンボックスと、ドロップダウンボックスの表示可能な値としての場所の名前を持つPythonアプリケーションのページがあります。私がしたいのは、ユーザーがこれらの場所の1つを選択して現在の場所に関連付けることができるようにすることです。ユーザーは、それがそのユーザの子エンティティとして作成された新しい場所を追加しますので、私は、このようなドロップダウンボックス移入する場合:アプリエンジンのデータストアからキー/ ID値を取得していますか?

locinfo = db.GqlQuery("SELECT * FROM Location WHERE ANCESTOR IS :1", userinfo) 

を...そしてこれは私がドロップを表示しようとする方法です。 (i.keyの値は単にプレースホルダにすぎません、私は説明します)。

<select name="lockey"> 
    {% for i in locinfo %} 
     <option value="{{i.key}}">{{i.locname}}</option> 
    {% endfor %} 
</select> 

私がしたいことは、ユーザーレコード内の1つの特定の場所エンティティへの参照を追加することです。通常のリレーショナルデータベースでは、各場所のプライマリキーを取得し、各オプションの値として出力し、ユーザーの現在の場所への参照としてUserレコードに格納します。しかし、私は周りを見回して、キーを取得することについて何も見つけていない、と私はより多くの周りを見て、私は間違った方法でそれについて行く印象を取得します。

提案がありますか?データストア内の

答えて

2

キーは単純な値は、そのキーのオブジェクトを取得するには、その.key()メソッドを呼び出して、データストア内の任意のエンティティのために

hereを参照)、その後、あなたがで可能な表現を取得することができない、オブジェクトによって表されますそれを文字列にキャストします。

テンプレート用のデータを取得するビューコードでこれを設定することも、テンプレート内でi.keyを呼び出すことができるようにするには、そのモデルクラスで読み取り専用プロパティを作成することができます。

+1

webappでデフォルトで使用されるDjangoテンプレートは '{{i.key}}'に完全に満足しています。これは 'i'の' .key() 'メソッドを呼び出し、文字列表現を返します。 – geoffspear

+0

Hmm。私は余分な仕事をしているように見えますか? OPのコードが彼のために働いていないのはどうですか... – bgporter

+0

それは私のために働いた - 問題は私のコードのどこかにありました。しかし、私はユーザーの現在の場所をUsersテーブルに保存しているようには思えません。 - ユーザーの現在の場所(db.Key()値)に割り当てるページに 'lockey'値を投稿します。データストアビューアに表示されません。私が価値を得ようとすると、「不完全な鍵」と言うエラーが出ます。 – benwad

関連する問題