2013-11-23 6 views
0

get_by_id() 메소드를 사용하여 특정 항목의 ID를 가져오고 google 데이터 스토어에서이 항목의 내용을 인쇄하는 대신 URL의 이름을 가져 와서 인쇄하려고합니다. 함유량. 예를 들어이 특정 이름이Google 애플리케이션 엔진에서 이름 지정하기

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

인쇄의 모든 컨텐츠

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

인쇄 특정 ID의 내용 (이 이름에 만족 하나 개 이상의 행이있을 수 있음)

내 예제의 두 번째 부분에서 ID를 얻으려면 get_by_id (long (id))를 사용하고 있습니다. get_by_key_name (name)을 사용하려고하는데 작동하지 않습니다. 그것에 대한 아이디어가 있습니까? 고맙습니다.

죄송합니다.하지만 의견을 남길 수 없어서 제 질문을 수정하고 있습니다. 기본적으로 지금부터는 내 데이터 스토어에서 모든 동물 이름을 얻을 수 있으며 템플릿 파일의 html 코드를 사용하여 클릭 할 수있게했습니다. 데이터 저장소에는 animal이라는 이름이 같은 항목이 두 번 이상 있습니다 (예 : name = duck, content = water 및 name = duck, content = lake). 이제, 동물의 모든 이름을 클릭 할 때 (나는 중복 요소 (예 : 오리) 한 번만 인쇄) 내 gql 쿼리에서 DINSTINCT를 사용하고 있습니다. 이름 = 오리 때문에 두 개의 내용을 가지고, 내가 이름을 클릭 할 때 오리의 두 가지 내용을 모두보고 싶습니다. 내 문제는 get_by_id (long (id)) 모든 요소의 고유 ID를 얻을 사용하고있다. 그러나 이것은 모든 항목이 고유 한 ID를 가지고 있기 때문에 name = duck의 내용을 둘 다 인쇄하지 않습니다. 그러나 나는 같은 이름을 가진 엔트리의 모든 내용을 원한다. 나는 다음을 시도하고 있지만 그것은 작동하지 않습니다.

 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)) 

기본적으로 모든 문자열 속성이 인덱싱되므로 이러한 요청을 수행 할 수 있습니다.

관련 문제