0

Google アプリ エンジン データストア内のエンティティの「編集」機能を実装しようとしています。そのため、データストア エンティティにキーが指定されている場合、このキーに関連付けられた値をフォームに入力したいと考えています。キーが指定されていない場合、これらの値は前回のフォーム ポスト試行から取得されます。self.request.arguments() で self.request フィールドをループすることはできますが、データストア (db.get(key)) オブジェクトでこれを行う方法がわかりません。

それで、これが可能かどうか、またはゲーフォームの処理がうまくいかない場合でもお知らせください。

class ItemsPage(webapp2.RequestHandler):
    def __init__(self, *args, **kwargs):
        super(ItemsPage, self).__init__(*args, **kwargs)
        self.formerrors = dict()
        self.formdata = dict()

    def get(self):

        if self.request.get('key'):
            # Key specified, get field values from db store
            key = self.request.get('key')
            item = db.get(key)
            for field in item.arguments():  # THIS DOES NOT WORK
                self.formdata[field] = item.field
        else:
            # No key specified, use the self.request values
            for field in self.request.arguments(): # THIS DOES WORK
                self.formdata[field] = self.request.get(field)

        # render the template with the formdata 
        template_values = {
                           'formerrors': self.formerrors,
                           'formdata': self.formdata # Use formdata to populate form fields
                           }
         template = JINJA_ENVIRONMENT.get_template(
                           'templates/items.html'
                           )
         self.response.write(template.render(template_values))

    def post(self):
        if self.validateSortForm():
            # Form input is valid, do some processing and then put into datastore
            item = itemDatstore()
            item.put()
            self.redirect('/')
        else():
            # Form input was not valid, redisplay the form
            self.get()

ありがとうございました

4

1 に答える 1

1

私を正しい道に導いてくれたマルカディアンの助けに感謝します。ドキュメントが言うように

Model.properties ()

このモデル クラスに定義されたすべてのプロパティの辞書を返します。

そこで、google.appengine.ext の db.Model オブジェクトで properties() を呼び出し、反復処理できるすべてのプロパティの辞書を取得します。

if self.request.get('key'):
    # Key specified, get field values from db store
    key = self.request.get('key')
    sort = db.get(key)
    for field in ItemDB.properties():
        self.formdata[field] = getattr(sort, field)
于 2013-04-21T14:38:57.573 に答える