0
我試圖在谷歌應用程序引擎數據存儲中爲實體實現「編輯」功能。因此,如果爲數據存儲實體指定了某個鍵,我想用與此鍵關聯的值填充表單。如果沒有指定密鑰,那麼這些值將從先前的表單發佈嘗試中拉出。雖然我能夠通過self.request.arguments()循環訪問self.request字段,但我不知道如何使用數據存儲(db.get(key))對象執行此操作。遍歷GQL查詢字段
所以請讓我知道如果這是可能的,或者即使我用我的表單處理的方式。
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()
謝謝
這是你想要的嗎? .properties()https://developers.google.com/appengine/docs/python/datastore/modelclass#Model_properties要考慮的另一件事是get的結果可能是None。 – marcadian 2013-04-21 04:15:53