2010-03-23 2 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.') 

Если это обновит существующую запись, если «обновление» - это запрос, содержащий ключевой ключ хранилища данных. Я пробую это, но продолжаю добавлять новую запись/сущность. Пожалуйста, дайте мне несколько советов, чтобы правильно обновить запись/сущность.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 –

+0

Да, код, который вы использовали выше, должен работать, предполагая, что 'update' является строковым ключом - _not_ ключевым именем. Используйте logging module (например, logging.warn) для регистрации и посмотрите окно консоли, чтобы просмотреть зарегистрированные сообщения. –

+0

BadKeyError: Неверный строковый ключ Повышает, я получаю строку «update» из строки запроса, например./Личный? Обновление = ahJsaXZlbGlob29kcHJvZHVjZXJyDwsSCFBlcnNvbmFsGM0wDA. Как назначить это правильной строковой клавишей? Thx для вашей помощи Ник. Я просто очень много новичок .... :-) –

0

Я, наконец, отвечаю на это сам, спасибо за руководство Ник Джонсон. Я не могу получить строку запроса url как «строковый ключ», который всегда вызывает BadKeyError: недопустимое исключение строки.

Я пытаюсь поместить эту строку «update» в качестве скрытого поля в форме редактирования html, и это работает, так как «update» является действительным «строковым ключом».

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

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