1

appengineでエンティティに書き込みたいプロパティを動的に選択しようとした人はいますか?例えば:

私は5つのフィールドを持つWebフォームを持っており、特定のユーザーはそれらのフィールドのサブセットに入力します。データを含むフィールドのみをサーバーにPOSTします(例:フィールド1、2、4)。サーバー側で、プロパティ1、2、および4のみをエレガントに書き込むにはどうすればよいですか?Modelクラスには、プロパティ名のディクショナリを返す関数(Model.properties())がありますが、これを使用してプロパティ名を選択するにはどうすればよいですか?

SQLでは、POSTされたフィールドをModel.properties()ディクショナリと照合することにより、INSERTまたはUPDATEステートメントを作成します。Appengine SDKのdbモジュールコードを調べて、ModelクラスにPropertyオブジェクトのコレクションがあるかどうかを確認しましたが、ディスク上にモジュールが見つかりません(Pythonとappengineは少し使い慣れています)。

更新:trunk / google / appengine / ext / db / init .pyを読みました。これにより、プロパティをグループとして参照する方法がないことが確認されました。回避策を知っている人はいますか?

何かご意見は?

Update2:この質問はAppEngineのGoogleグループで回答されました: http://groups.google.com/group/google-appengine/browse_thread/thread/b50be862f6d94b6e#

4

1 に答える 1

1

Python モジュールは次のようになります。

from google.appengine.ext.db import Key
from google.appengine.api.datastore import Get, Put

def edit_item(request, db_id):

    objKey = Key(str(db_id))

    if request.method == 'POST':
        objEntity = Get(objKey)
        for k, v in request.POST.iteritems():
             objEntity[k]=v
        Put(objEntity)
        return HttpResponseRedirect('/')

    query = TestModel.get(objKey)
    return render_to_response('edit.html', ({'modify_data': query,}))

HTML は次のようになります。

<form method="POST" action="." enctype="multipart/form-data">
  Title: <input type="text" name="title" value="{{modify_data.field1}}"/>
  Text: <input type="text" name="txt" value="{{modify_data.field2}}"/>

  <input type="submit"/>
</form>
于 2009-01-26T05:17:06.610 に答える