2009-08-24 2 views
0

나는 새로운이기 때문에 내가 지금 여기에 이미지를 게시 할 수 없습니다가 what I want의 링크입니다.실제 django 모델을 사용하여 데이터베이스 쿼리를 최적화하는 방법은 무엇입니까?

그래서 저는 왼쪽에 모델을하고 난 오른쪽에있는보기를 원한다. . 지금 현재로
는, 내가 템플릿 코드에 관심이있는 모든 스레드를 통해 반복 해요 :

{% for thread in threadlist %} 
{% for post in thread.postlist %} 
... 

모델 코드 : 적은 쿼리 할 수있는 방법이 있어야합니다

class Thread (models.Model): 
...  
def postlist(self): 
    posts = list(self.post_set.all()) 
    return [posts.pop(0)] + posts[-2:] 

열 또는 뭔가를 결합하여. 나는 Python/Django에 익숙하지 않고 이것을하는 법을 정말로 모른다.

답변

2

select_related을 사용할 수 있습니다. 이렇게하면 많은 작은 쿼리 대신 하나의 큰 쿼리로 끝날 수 있도록 쿼리가 조인을 따르게됩니다.

워드 프로세서는 매우 철저하다. 나는 각 스레드에 대한 쿼리를하고 있어요

0

당신이 post_set.all를 사용 할 것을 documentation에서 should 찾고(). 나는 쿼리가 장막 뒤에서 장고와 그 게으른 것으로 합쳐 졌다고 확신한다. 의미가있을 때까지로드되지 않습니다. 문서에서

는 :

검색어 세트는 게으른 - 데이터베이스 활동을 포함하지 않는 검색어 세트를 만드는 작업. 하루 종일 필터를 함께 쌓을 수 있으며, 장고는 QuerySet이 평가 될 때까지 실제로 쿼리를 실행하지 않습니다.

+0

, 그 페이지 당 10 개 + 쿼리입니다. 2 개의 중첩 된 루프 대신 1 개의 루프 만 필요합니다. 는 "검색어 세트가 게으르다"그들은 단지 실행 할 때 필요하고 여기에 그들 모두는 것을 의미합니다. 내 실제 솔루션이 최적이 아닙니다. – knarf

관련 문제