2013-11-23 2 views
0

Вместо того чтобы использовать метод get_by_id() для получения идентификатора определенной записи и распечатать содержимое этой записи из хранилища данных google, я пытаюсь получить имя URL-адреса и распечатать содержание. Например:Получить по имени в google app engine

<a href="http://.../name"></a> 

печать всего содержимого, которые имеют это конкретное название (может иметь более чем один строк контента с таким именем)

<a href="http://.../343532432"></a> 

печати содержание конкретного идентификатора

Я использую get_by_id (long (id)), чтобы получить идентификатор во второй части моего примера и его работу. Я пытаюсь использовать get_by_key_name (имя), но он не работает. любые идеи по этому поводу? Спасибо.

извините, но поскольку я не могу оставить комментарий, я редактирую свой вопрос. В принципе, поскольку теперь я могу получить все имена животных из своего хранилища данных, и я сделал их доступными с помощью html-кода в файле шаблона. В хранилище данных есть записи с одним и тем же названием животного более одного раза (например, name = duck, content = water и name = duck, content = lake). Теперь, когда я нажимаю на каждое имя животных (я использую DINSTINCT в моем запросе gql для печати избыточных элементов (например, утка) только один раз). Поскольку имя = утка имеет два содержания, когда я нажимаю на имя Утки я хочу видеть оба содержания. Моя проблема в том, что если я использую get_by_id (long (id)), я получаю уникальный идентификатор каждого элемента. Но это не будет печатать меня как с содержимым имени = утка, потому что каждая запись имеет уникальный идентификатор. Но я хочу, чтобы все содержимое записей с тем же именем. Я пытаюсь сделать следующее, но это не работает.

 msg = MODEL.Animals.get_by_key_name(name) 
    self.response.write("%s" % msg.content) 
+0

Трудно диагностировать проблему без дополнительных деталей. –

+0

Ваши данные могут иметь целочисленный идентификатор или имя строки KEY. Вы можете использовать get_by_id(). Попробуйте что-то вроде get_by_id ('name') или предоставите дополнительную информацию, чтобы мы могли вам помочь. –

ответ

0

С помощью get_by_id() вы можете получить сущность только в том случае, если вы знаете этот идентификатор. Эти операции называются «Малые операции» в квоте, и они дешевле, чем данные хранилища данных, но для получения списка объектов, фильтрованных индексированным свойством, - вы должны использовать фильтры.

query = MODEL.Animals.query() 
query = query.filter(MODEL.Animals.name == 'duck') 
ducks = query.fetch(limit=100) # limit number of returned animals 
for duck in ducks: 
    self.response.write('%s - %s' % (duck.name, duck.content)) 

По умолчанию все свойства строки индексируются, поэтому вы сможете выполнять такие запросы.