2013-08-06 3 views
2
most_viewed_videos = Video.objects.filter(
       videowatch__created__month=today.month, 
       viewing__status="D" 
      ).annotate(
       count=Count("videowatch"), 
       viewing_count=Sum("viewing") 
      ).values("count", "viewing_count").order_by(
       "-viewing_count", 
       "-count" 
      ) 

이봐, 난이 코드를 가지고 내 질문에 내가 하나 개의 결과로 함께 countviewing_count을 요약 할 수있는 방법입니다.계산 주석 필드 함께

나는 시도했지만 무슨 일을하고 있는지 찾지 못했습니다.

편집 : 나를

 most_viewed_videos = Video.objects.filter(
      videowatch__created__month=today.month, 
      viewing__status="D" 
     ).extra(
      select={'total': 'COUNT("videowatch") + SUM(CAST("viewing" as CHAR))'} 
     ).values("total").order_by("-total") 

답변

1

당신은 그것을 달성하기 위해 .extra의 검색어 방법을 사용할 수 있습니다 위해 일하고 있었는지 솔루션 : 그래도 난 그것을 테스트하지 않은

most_viewed_videos = Video.objects.filter(
     videowatch__created__month=today.month, 
     viewing__status="D" 
    ).annotate(
     count=Count("videowatch"), 
     viewing_count=Sum("viewing") 
    .extra(
     select={'total': 'COUNT(videowatch)+SUM(viewing)'} 
    ) 
    ).values("count", "viewing_count").order_by(
     "-viewing_count", 
     "-count" 
) 

. 비슷한 문제인 "이전에 주석이 달린 값에 대한 주석"을 직면했습니다. 그리고 그것은 가능하지 않은 것처럼 보입니다, 나는 과거에 ticket을 열었지만 닫혔습니다.

+0

감사합니다. – Azd325