2011-02-06 2 views
0

StringListProperty() 인 쿼리 개체를 어떻게 정렬합니까?

이 모델을 가지고 있습니다 :

class ArticleTagList(db.Model): 
    article_tags = db.StringListProperty() 

EditArticleHandler :

  tag_query = ArticleTagList.all() 

     for tag in tag_query: 
      for i in range(len(tag.article_tags)): 

       self.response.out.write(""" <span id="small-tags"> 
       <input type="checkbox" name="article_tag" value="%s">%s </span>""" 
       % (tag.article_tags[i], tag.article_tags[i])) 

그러나 이러한 태그를 알파벳순으로 인쇄하는 것이 좋습니다.

물론

  tag_query.sort() 

을 제공합니다
AttributeError: 'Query' object has no attribute 'sort' 

쿼리 된 목록을 어떻게 정렬합니까? 감사.

업데이트

답변 주셔서 감사합니다. 쿼리 결과를 이해하는 데 어려움을 겪고 있으므로 아래 의견을 이해할 수 없습니다. 그러나 이것이 내가 어떻게 해결 했는가에 대한 코멘트이며 왜 이것이 좋은 해결책인지 또는 왜 좋은 해결책이 아닌지에 대한 논평에 감사 할 것입니다. (예를 들어, 반복 할 때 range()을 사용하는 것은 여전히 ​​잘못된 것입니까?) 감사합니다!

 query = ArticleTagList.all() 
    items = query.get() 

    items.article_tags.sort() 

    for i in range(len(items.article_tags)): 
     self.response.out.write(""" <span id="small-tags"> 
      <input type="checkbox" name="article_tag" value="%s">%s </span>""" 
      % (items.article_tags[i], items.article_tags[i])) 

답변

1

하지만, 대신 인스턴스를 정렬하려고합니다. 당신이 같은 일을해야한다 :

for taglist in tag_query: 
    for tag in sorted(taglist.article_tags): 
    #... 

을하지만 당신은 아마 항상 정렬 된 순서대로 원하는 주어, 당신이 그것을 저장하기 전에 당신이 그것을 만들 때 개체에 taglist.article_tags.sort() 전화를 쉽게, 그리고 줄에 태그가 정렬 된 순서로 저장되었는지 확인하십시오.

+0

불행히도 내가 잘못하고있는 것을 이해하지 못합니다.모델'ArticleTagList'에서 나는 article_tags라는 속성을 가지고 있습니다. 표시하기 전에이 목록을 쿼리하고 정렬하고 싶습니다. 어떻게해야합니까? 그리고 내가 말했듯이, 목록을 정렬 된 목록으로 저장하는 것이 더 낫다는 것을 이해합니다. 분류 된 목록으로 어떻게 저장합니까? 감사. – Zeynel

+0

@Zeynel : 정렬하여 표시하려면 내 대답에 첫 번째 코드 조각을 사용하십시오. 엔티티를 저장하기 전에 정렬하려면 엔티티를 처음 생성 할 때와'.put()'을 호출하기 전에 두 번째 코드 스 니펫을 사용하십시오. –

1

for i in range(len(tag.article_tags))을 수행하여 목록을 반복하지 마십시오. 그럴 이유가 없습니다. for tag in tag.article_tags은 훨씬 잘 작동하며 Pythonic이 더 많습니다.

귀하의 질문에 대답하려면 여기에 두 개의 목록과 비슷한 것들이 있습니다 : ArticleTagList 인스턴스 집합과 각 인스턴스 내의 article_tags 목록. 태그 목록에 관계없이 모든 태그를 정렬하려고합니까?

full_list = [] 
for tag in tag_query: 
    full_list.extend(list(tag.article_tags)) 

full_list.sort() 
+0

"ArticleTagList 인스턴스 집합과 각 인스턴스 내의 article_tags 목록" 나는 이것이 무엇을 의미하는지 또는 나의 변수 중 어느 것이 어느 것을 의미하는지 이해하지 못한다. 이것에 대한 더 많은 설명을 부탁드립니다. 감사. – Zeynel

2

당신은 아마 원하는 : 어떤 경우에, 당신은 하나 개의 큰 목록에 모두 가입해야합니다

당신이 순서에 태그를 인쇄하려는 것처럼 소리
for article_tag_list in tag_query: 
     article_tags = sorted(article_tag_list.article_tags) 
     for tag in article_tags: 
      self.response.out.write("""<span id="small-tags"> 
      <input type="checkbox" name="article_tag" value="%s">%s </span>""" 
      % (tag, tag)) 
+0

'tag_query'는 태그 목록이 아닌'ArticleTagList' 인스턴스를 반환합니다. –

+0

@Nick, Yikes, 바보 같은 실수였습니다. –

+0

@Nick Johnson : 쿼리가 반환되는 것에 대해 아직도 혼란 스럽습니다. "쿼리 개체에 정렬 방법이 없습니다"또는 이와 비슷한 것이 나타납니다. 쿼리 결과에 대한 좋은 생각은 무엇입니까? 이것은'StringListProperty'이기 때문에 반환되는 것은리스트가 아니라는 것을 혼란스럽게합니다. 감사. – Zeynel

관련 문제