2010-03-23 41 views
3
def post(self): 
    update = self.request.get('update') 

    if users.get_current_user(): 
     if update: 
      personal = db.GqlQuery("SELECT * FROM Personal WHERE __key__ = :1", db.Key(update)) 

      personal.name = self.request.get('name') 
      personal.gender = self.request.get('gender') 
      personal.mobile_num = self.request.get('mobile_num') 
      personal.birthdate = int(self.request.get('birthdate')) 
      personal.birthplace = self.request.get('birthplace') 
      personal.address = self.request.get('address') 
      personal.geo_pos = self.request.get('geo_pos') 
      personal.info = self.request.get('info') 
      photo = images.resize(self.request.get('img'), 0, 80) 
      personal.photo = db.Blob(photo) 
      personal.put() 
      self.redirect('/admin/personal') 
     else: 
      personal= Personal() 

      personal.name = self.request.get('name') 
      personal.gender = self.request.get('gender') 
      personal.mobile_num = self.request.get('mobile_num') 
      personal.birthdate = int(self.request.get('birthdate')) 
      personal.birthplace = self.request.get('birthplace') 
      personal.address = self.request.get('address') 
      personal.geo_pos = self.request.get('geo_pos') 
      personal.info = self.request.get('info') 
      photo = images.resize(self.request.get('img'), 0, 80) 
      personal.photo = db.Blob(photo) 
      personal.put() 
      self.redirect('/admin/personal') 

    else: 
     self.response.out.write('I\'m sorry, you don\'t have permission to add this LP Personal Data.') 

如果'update'是包含密鑰數據存儲區密鑰的查詢字符串,是否應該更新現有記錄。我嘗試這個,但不斷增加新的記錄/實體。請給我一些正確更新記錄/實體的建議。GAE Datastore Put()

正在糾錯? :

def post(self): 
    update = self.request.get('update') 

    if users.get_current_user(): 
     if update: 
      personal = Personal.get(db.Key(update)) 

      personal.name = self.request.get('name') 
      personal.gender = self.request.get('gender') 
      personal.mobile_num = self.request.get('mobile_num') 
      personal.birthdate = int(self.request.get('birthdate')) 
      personal.birthplace = self.request.get('birthplace') 
      personal.address = self.request.get('address') 
      personal.geo_pos = self.request.get('geo_pos') 
      personal.info = self.request.get('info') 
      photo = images.resize(self.request.get('img'), 0, 80) 
      personal.photo = db.Blob(photo) 
      personal.put() 
      self.redirect('/admin/personal') 
     else: 
      personal= Personal() 

      personal.name = self.request.get('name') 
      personal.gender = self.request.get('gender') 
      personal.mobile_num = self.request.get('mobile_num') 
      personal.birthdate = int(self.request.get('birthdate')) 
      personal.birthplace = self.request.get('birthplace') 
      personal.address = self.request.get('address') 
      personal.geo_pos = self.request.get('geo_pos') 
      personal.info = self.request.get('info') 
      photo = images.resize(self.request.get('img'), 0, 80) 
      personal.photo = db.Blob(photo) 
      personal.put() 
      self.redirect('/admin/personal') 

    else: 
     self.response.out.write('I\'m sorry, you don\'t have permission to add this LP Personal Data.') 

回答

0

有沒有必要當你知道的關鍵,做一個查詢:要獲取db.get方法()上的密鑰直接檢索它,這比執行查詢要快得多。

至於你爲什麼每次都創建一條新記錄,看起來你沒有正確地傳遞'更新'到你的頁面。嘗試記錄查詢字符串參數以查看發生了什麼問題。

+0

db.get()是否正確?如何在本地SDK中記錄查詢? Thx Nick – 2010-03-23 10:56:17

+0

是的,你上面使用的代碼應該工作,假設'update'是一個字符串鍵 - 不是一個鍵名。使用日誌模塊(例如logging.warn)進行日誌記錄,並查看控制檯窗口以查看日誌消息。 – 2010-03-23 14:27:44

+0

BadKeyError:無效的字符串鍵引發,我從查詢字符串中獲得'update'字符串,例如/個人?更新= ahJsaXZlbGlob29kcHJvZHVjZXJyDwsSCFBlcnNvbmFsGM0wDA。如何分配這是正確的字符串鍵? Thx對你的幫助Nick。我只是非常新手.... :-) – 2010-03-23 18:36:00

0

我終於自己回答了,感謝尼克·約翰遜指導。 我無法將查詢字符串url作爲「字符串鍵」始終引發BadKeyError:無效的字符串鍵異常。

我試圖把這個'更新'字符串作爲隱藏字段在HTML編輯窗體上,這是可行的,因爲'更新'現在是一個有效的'字符串鍵'。

def post(self): 
    update = self.request.get('update') 

    if users.get_current_user(): 
     if update != '': 
      personal = Personal.get(db.Key(update)) 
相關問題