2009-08-02 4 views
12

그래서 두 가지 모델, 순위 모델 및 UserRanking 모델이 있습니다. 이 앱은 항목 목록을 작성하고 순위를 매기는 사람들을 중심으로합니다 (예 : "Best Movies of 2008"). 순위 모델은 전체 집계 순위 목록으로 사람들이 해당 목록에 대해 작성한 모든 UserRankings에서 계산됩니다. 그래서 각각의 랭킹에는 목록의 순위 버전을 제출함으로써 자신의 의견을 표명 한 각 사용자마다 정확히 하나씩 다른 UserRankings이 있습니다. UserRanking 모델에는 Ranking 모델을 가리키는 'ranking'이라는 ForeignKey 필드가 있습니다.매우 혼란 ... 장고에서 '주석'을 사용하는 문제

어쨌든 인기있는 순위를 수집하려고합니다. 내 첫 번째 단계는 코드 줄을 사용하여 관련된 대부분의 UserRankings로 순위를 얻을 수 있습니다 :

popular = Ranking.objects.all().annotate(num_user_rankings=Count('userranking')).order_by('num_user_rankings')[:50] 

그러나, 장고 나에게 나가서 설명하자면 NameError를 제공하고 말한다 : "전역 이름 '백작'이 정의되지 않았습니다." 주석 달기 (Django Development 버전에서만 사용 가능)에 대한 불만은 없으므로 Django Development가 올바르게 작동하고 있음을 의미합니까? 'Count'는 Django 문서에서 annotate에 arg로 사용할 수있는 몇 가지 Aggregate 함수 중 하나로 명확하게 설명됩니다. 이것은 절대 의미가 없습니다.

실제로 테스트 한 결과 매개 변수가없는 주석을 사용하여 내 페이지를 표시 할 수 있었고 오류가 발생하지 않았습니다. 물론 분명히 order_by도 제거했습니다. 따라서 주석은 확실히 작동합니다!

답변

32

django.db.models에서 개수를 가져 왔습니까?

+3

나는 그 대답이 그렇게 단순하다고 믿을 수 없다. 나는 어리석은 짓을하고 있다는 것을 알았지 만, 어리석은 짓은하지 않았다! 감사합니다, 좋은 하루 되세요 =) –

관련 문제