2011-02-03 1 views
0

내가 모델 예를 들어인덱스 [1]에서 StringListProperty()를 인쇄하는 방법은 무엇입니까?

class Category(db.Model): 
    merchandise = db.StringListProperty() 
    content = db.StringListProperty()   
    topics = db.StringListProperty() 

이, merchandise 목록 나는이

elif merchandise_type == "merchandise": 
    query = Category.all() 
    e = query.get() 

    self.response.out.write("""<ul>""") 
    for i in range(len(e.merchandise)): 
     self.response.out.write("""<li><a href="/tag?tag=%s">%s</a></li>""" 
     % (e.merchandise[i], e.merchandise[i])) 
    self.response.out.write("""</ul>""") 

같은 목록을 인쇄하지만 "merchandise"을 인쇄하지 않을 ["merchandise","tshirt","book","poster"]

입니다.

e.merchandise[0] 대신 e.merchandise[1]부터 어떻게 시작해야합니까?

감사합니다. 대신 1

0의 편집에서 루프를 시작합니다 range()의 첫 번째 인수를 변경

+1

왜 'for merchandise_item in e.merchandise : ...'가 아닌가? 경험적으로 말하자면'range (len (...)) '를 사용하고 인덱스 자체를 제외한 다른 것을 사용한다면, 당신은 잘못하고있는 것입니다. – delnan

+0

@delnan : 감사합니다! 그에 따라 줄을 바 꾸었습니다. 범위를 언급하지 않고 반복 할 수 있다는 것을 알지 못했습니다. 추가 정보는 어디서 볼 수 있습니까? – Zeynel

+1

@Zeyel : Python 자습서. 진지하게. 'for'가 항상 iterables에서 작동하고'range'가 단지 하나의 반복 가능하다는 것을 모르는 것이라면, 당신은 언어를 모른다. – delnan

답변

1

for i in range(1, len(e.merchandise)): : 물론, 당신은 왜해야합니까이다, 어리석은 실수 range()

+0

정말 고마워! 그건 그렇고, "len()"이 아닌'range()'의 첫번째 인자를 바꾸는 것을 의미한다고 생각합니다. " – Zeynel

+0

@Zeynel : 머리를 주셔서 감사합니다. 대답을 – Jordan

3
for merch in e.merchandise[1:]: 
    self.response.out.write('<li><a href="/tag?tag=%s">%s<a/></li>' % (merch, merch)) 

질문 len() 변경 첫 번째 요소는 목록의 첫 번째 요소입니다.

+0

업데이트했습니다. 예, 정렬 순서를 변경하고 "상품"이 더 이상 첫 번째 항목이 아니기 때문에 이것이 좋지 않다는 것을 깨달았습니다. 디렉토리 페이지에서 범주 이름으로 사용할 목록의 첫 번째 항목으로 "상품"을 넣습니다. 데이터 저장소에서 속성 이름을 가져 오는 방법에 대한 또 다른 질문을 할 것입니다. – Zeynel

관련 문제