Google App Engine: длина результата get_by_id? - PullRequest
0 голосов
/ 10 мая 2011

Как мне вернуть длину get_by_id ??

Например, у меня есть

query = Model.get_by_id(1)

Я пытался

if len(query) == 1 и if query.count() == 1 оба не работают

Ответы [ 2 ]

4 голосов
/ 10 мая 2011

* Model.get_by_id () * возвращает только один объект, если передан один идентификатор, он возвращает список объектов только тогда, когда передан список идентификаторов, что означает, что это не произойдет иметь len и считать.

если вы хотите проверить, не является ли запрос None, вы можете просто указать

query=Model.get_by_id(1)

if query is not None:

если вы хотите получить список объектов на основе ключей, используйте get:

query = MOdel.get(keys) #here keys is a list of keys

if len(query) == 1  will work now
1 голос
/ 10 мая 2011

С http://code.google.com/appengine/docs/python/datastore/modelclass.html#Model_get_by_id:

Если id - это строка, представляющая одно имя, то метод возвращает экземпляр модели для имя или None, если объект не существует. Если id - это список, метод возвращает список экземпляры модели со значением None, если для соответствующего ключа не существует сущности.

Так что используйте что-то вроде:

query = Model.get_by_id(1)
if query is None:
    print 'Not found'
else:
    print 'Returned one result'

для нескольких идентификаторов:

query = Model.get_by_id([1, 2, 3])
count = 0
for item in query:
    if item is not None:
        print 'Found item ' + str(item)
        count += 1
print count

Предупреждение: не проверено

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