문제

나는 가지고있다 Exhibit 참조하는 개체 Gallery 둘 다 Google App Engine Datastore에 저장됩니다.

어떻게 주문합니까? Exhibit 각각의 수집 Gallery 값을 반복 할 때 (궁극적으로 Django 템플릿에서) 객체?

즉 이것은 작동하지 않습니다


class Gallery(db.Model):
  title = db.StringProperty()
  position = db.IntegerProperty()

class Exhibit(db.Model):
  gallery = db.ReferenceProperty(Gallery, collection_name='exhibits')
  title = db.StringProperty()
  position = db.IntegerProperty()

galleries = db.GqlQuery('SELECT * FROM Gallery ORDER BY position')
for gallery in galleries:
  gallery.exhibits.order('position')

# ... send galleries off the the Django template

템플릿에 렌더링되면 갤러리가 올바르게 주문되지만 전시회는 그렇지 않습니다.

도움이 되었습니까?

해결책

App Engine이 생성하는 컬렉션 속성에 의존하는 대신 자신의 쿼리를 구성해야합니다.

Exhibits = Exhibit.all (). 필터 ( "Gallery =", Gallery) .Order ( "위치")

또는 동등하게, GQL에서 :

전시회 = db.gqlquery ( "갤러리에서 1 : 1 순서별로 전시회에서 선택 * *, 갤러리)

전시 목록 목록을 전달하지 않고 템플릿 내부 에서이 작업을 수행하려면이 쿼리를 실행하는 갤러리 객체에서 간단한 메소드를 정의하고 템플릿에서 참조 할 수 있습니다 (예 : , {{gallery.exhibits_by_position}}은 Gallery 객체에서 Exhibits_by_position ()을 실행 한 다음 위의 쿼리를 수행 할 수 있음).

이의 속도에 대해 걱정하는 경우 걱정하지 마십시오. App Engine이 작성하는 컬렉션 속성은 단순히 이에 대한 구문 설탕입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top