Google App Engine - ошибка хранилища данных get_or_insert key_name - PullRequest
5 голосов
/ 29 ноября 2010

Я смущен get_or_insert(..).Что я должен передать как key_name?Рассмотрим следующий пример:

class Person(db.model)
    name = db.StringProperty(required=True)

Предположим, что два человека не могут иметь одинаковые имена.Скажем, я хочу получить или вставить новый Person с именем Peter, как бы выглядело мое заявление get_or_insert?

Приветствия,

Пит

Ответы [ 2 ]

5 голосов
/ 30 ноября 2010

Возможно, сбивает с толку то, что ключ не отображается непосредственно в объявлении модели, поэтому бит name = db.StringProperty в вашем примере не требуется. get_or_insert принимает имя ключа в качестве первого (обязательного) аргумента, поэтому вы ищете код, подобный:

person = Person.get_or_insert('Peter')
# other interesting & useful code here...
# later, maybe we need to retrieve that key name from the object:
name = person.key().name()
assert(name == "Peter")
1 голос
/ 30 ноября 2010

Вы можете думать о key_name как о первичном ключе.Посмотрите на документы для get_or_insert(...), есть пример того, как выглядит внутренний код.

Если имя является уникальным полем, вы можете использовать его в качествеключевое имя тоже.Хотя я бы предложил убрать пробелы и нормализовать регистр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...