2010-03-23 3 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 데이터 스토어 Put()

수정? : 간단히 훨씬 빠르게 쿼리를하는 것보다, 이는 직접 검색하기 위해 키() db.get 전화 :

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

당신이 키를 알고있을 때 쿼리를 수행 할 필요가 없습니다.

매번 새 레코드를 만드는 이유는 페이지에 '업데이트'가 제대로 전달되지 않는 것 같습니다. 쿼리 문자열 매개 변수를 로깅하여 잘못된 결과를 확인하십시오.

+0

위의 db.get()은 올바른가요? 로컬 SDK 내에서 쿼리를 기록하는 방법? Thx Nick –

+0

예, 위에서 사용한 코드가 작동해야합니다. 'update'는 문자열 키 - _ 키 이름이 아닙니다. 로깅 모듈 (예 : logging.warn)을 사용하여 로깅하고 콘솔 창을보고 기록 된 메시지를 확인하십시오. –

+0

BadKeyError : 잘못된 문자열 키가 발생합니다. 검색어 문자열에서 'update'문자열을 가져옵니다. 예 :/personal? update = ahJsaXZlbGlob29kcHJvZHVjZXJyDwsSCFBlcnNvbmFsGM0wDA. 이것을 올바른 문자열 키로 지정하는 방법은 무엇입니까? 니 도움을 청해 닉. 나는 단지 초심자이다 .... :-) –

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)) 
관련 문제