У меня есть веб-приложение в GAE, которое использует базу данных ndb, где каждый объект имеет информацию об пользовательских целях и две строки, класс Entity похож на тот, который нижеМножественные вызовы метода put() при обновлении ndb на движке google
class UserPlus(ndb.Model):
user = ndb.UserProperty()
dogName = ndb.StringProperty(indexed=False)
catName = ndb.StringProperty(indexed=False)
Главная страница проверить, есть ли уже объект, соответствующий этому пользователю, и если да, то отображается значение строк dogName
и catName
.
Тогда есть форма, в которой пользователи могут обновлять значения dogName
и catName
. Это выполняет запрос POST на другую страницу, метод ниже обновлять entiy
def post(self):
currentUser = users.get_current_user()
up = UserPlus.query(UserPlus.user==currentUser).get()
up.dogName = self.request.get('dog_name')
up.catName = self.request.get('cat_name')
weatherUser.put()
self.redirect('/')
Но когда я перенаправлены на главную страницу, значения dogName
и catName
не обновляются, пока не обновите страницу. Я обнаружил, что, вызывая метод put()
два раза вместо одного, в том же положении, это больше не встречается, но я не понимаю, почему.
Я делаю что-то неправильно или так работает ndb?
Как ваша основная страница получает страницу пользователя? Если это запрос, вы, вероятно, сталкиваетесь с «возможной согласованностью». –
Ничего себе, код некорректно отформатирован (не запускается), я его отредактировал, и мое редактирование было отклонено: D. – 0xc0de