2013-11-23 21 views
0

而不是使用get_by_id()方法來獲取特定條目的id並從google數據存儲中打印此條目的內容,我試圖獲取url的名稱並打印內容。例如:通過谷歌應用引擎中的名稱獲取

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

打印所有具有此特定名稱的內容(可能有這個名字的含量超過一個行)

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

打印ID特定的內容

我正在使用get_by_id(long(id))來獲取我的示例的第二部分中的id及其工作。我試圖使用get_by_key_name(name),但它不起作用。有關於此的任何想法?謝謝。

對不起,但由於我不能留下評論,我正在編輯我的問題。基本上,因爲現在我可以從我的數據存儲獲取動物的所有名稱,並且我使用模板文件中的html代碼使它們可點擊。在數據存儲區中,有超過一次的動物名稱相同(例如,名稱=鴨,內容=水,名稱=鴨,內容=湖)。現在,當我點擊動物的每一個名稱時(我在我的gql查詢中使用DINSTINCT來只打印一次冗餘元素(例如鴨子))。由於名稱=鴨子有兩個內容,當我點擊名稱我想看到兩個內容的鴨子。我的問題是,如果我使用get_by_id(長(id))我得到每個元素的唯一ID。但是這不會打印出名稱= duck的內容,因爲每個條目都有唯一的ID。但是我想要所有具有相同名稱的條目的內容。我正在嘗試以下,但它不工作。

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

很難診斷問題是什麼,沒有更多的細節。 –

+0

您的數據可能具有整數ID或字符串KEY名稱。你可以通過使用get_by_id()來獲得。嘗試類似get_by_id('name'),或提供更多信息,以便我們可以幫助您。 –

回答

0

有了get_by_id(),只有知道這個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)) 

默認情況下,所有的字符串屬性都被索引,所以你將能夠做這樣的請求。

相關問題