Appengine: db.Model.get_by_id (id) не работает - PullRequest
2 голосов
/ 16 августа 2011

У меня есть несколько ледяных сущностей в моем хранилище данных.Когда я запускаю следующее в admin-webInterface

from google.appengine.ext import db

class Ice(db.Model):
    name = db.StringProperty()
    description = db.StringProperty(multiline=True)
    date = db.DateTimeProperty(auto_now_add=True)

for ice in Ice.all():
    print ice.key().id()
    print Ice.get_by_id(ice.key().id())

, я всегда получаю:

4
None
5
None
6
None
7
None
8
None
9
None
10
None
11
None
12
None
13
None
14
None
15
None
16
None
17
None
18
None
19
None
20
None

Почему?

Ответы [ 3 ]

1 голос
/ 17 августа 2011

Такое поведение вы бы увидели, если бы ваши Ice сущности были дочерними сущностями.Поле id не является глобально уникальным - оно уникально только для данного вида и родителя.

0 голосов
/ 11 апреля 2013

У меня также недавно были проблемы с методом get_by_id. Я использую SDK 1.7.6. Проблема заключалась в том, что новый dev_appserver создает значения идентификатора сущности хранилища данных больше, чем может обработать Javascript Я могу быть исправлен в вашей среде разработки с помощью последовательных идентификаторов.

Используйте эту ссылку для дальнейшего объяснения Выпуск 1.7.6

Когда я искал решение проблемы, меня смущали все отзывы о пропавшем родителе. У меня не было отсутствующих родительских отношений, и все же get_by_id не работал! Я надеюсь, что этот ответ может сэкономить время для людей с такой же проблемой ...

0 голосов
/ 16 августа 2011

Вы используете Ice.key(). Вы хотели Model.get_by_key_name() вместо?

...