0

高レプリケーション データストアを使用して Google App Engine でフォームを送信した後 (たとえば、新しいエントリを更新または追加するとき) にGAE djangoformsの記事の例を最新の状態で表示されるように書き直したいと思います。

この記事で繰り返し使用される主なクエリは次のとおりです。

query = db.GqlQuery("SELECT * FROM Item ORDER BY name")

これを次のように翻訳します。

query = Item.all().order('name')  // datastore request

このクエリは、フォームを送信した後に高レプリケーション データストアから最新の更新されたデータを取得したいと考えています (これらの場合にのみ、送信後に特定の URL にリダイレクトできると仮定します。ケース私はこれをしません)。

結果を格納するフォームの検証は次のように行われます。

data = ItemForm(data=self.request.POST)
if data.is_valid():
    # Save the data, and redirect to the view page
    entity = data.save(commit=False)
    entity.added_by = users.get_current_user()
    entity.put()  // datastore request

フォームに入力する (編集する) ためにデータストアから最新のエントリを取得すると、次のようになります。

id = int(self.request.get('id'))
item = Item.get(db.Key.from_path('Item', id))  // datastore request
data = ItemForm(data=self.request.POST, instance=item)

では、フォーム送信後に最新のデータを反映するために、これらのデータストア クエリにエンティティ グループ/先祖キーを追加するにはどうすればよいでしょうか。フォームに入力するとき (編集用) およびフォームを送信した後、すべてのクエリに最新のデータが必要ではないことに注意してください。

実用的なコード例を教えてくれるのは誰ですか?

4

1 に答える 1

0

同じブロック内にある場合は、現在のインスタンスの参照があります。
次にput()、それを取得したら、次の方法で取得できますid

if data.is_valid():
    entity = data.save(commit=False)
    entity.added_by = users.get_current_user()
    entity.put()  
    id= entity.key().id() #this gives you inserted data id
于 2011-12-29T09:26:40.923 に答える