문제

내가 가지고 있다고 가정 해 봅시다 '점수' 필드가있는 테이블 '사용자','scorea', '점수', 'scorec'. 리더 보드보기에서 나는 방문자가 선택한 이러한 점수 필드 중 하나에 의해 쿼리 세트를 가져 와서 주문합니다. 템플릿은 쿼리 세트를 페이지를 찍습니다. 테이블은 정규 기간 (CRON이 트리거 된 Django 명령)에서 작업에 의해 업데이트됩니다.

추가하고 싶습니다 '계급' 내가 가질 수 있도록 쿼리 세트에 필드 '계급', '사용자', 'scorea', '점수', 'scorec'. 또한 데이터베이스 독립성을 유지하고 싶습니다 (Postgre는 옵션이며 당분간은 지원하지 않습니다. row_number).

솔루션은 작업을 수정할 수있어 세 가지 새로운 필드에서 세 가지 다른 순위를 계산하고 작성하도록합니다.'랭카', '랭크', '랭크').

더 나은 솔루션이 있기를 바랍니다.

도움이 되었습니까?

해결책

템플릿에서 순위를 계산할 수없는 이유는 무엇입니까?

{% for row in results_to_display %}
    <tr><td>{{forloop.counter}}</td><td>{{row.scorea}}</td>...
{% endfor %}

또는보기 기능에서 순위를 계산할 수 있습니다.

def fetch_ranked_scores( request ):
    query = Score.objects.filter( ... ).orderby( scorea )
    scores = [ r, s.scorea for r, s in enumerate(query) ]
    return render_to_response ( template, { 'results_to_display':scores } )

또는 모델에서 순위를 계산할 수 있습니다.

 class Score( models.Model ):
     ScoreA = models.IntegerField( ... )
     def ranked_by_a( self ):
         return enumerate( self.objects.filter(...).orderby( scorea ) )

나는 이것을 할 수있는 많은 방법이 있다고 생각합니다.

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