하위 쿼리의 장고 라운드

Drennos

안녕하세요 저는 다음 코드로 하위 쿼리를 사용하여 ListView에서 각 프로젝트의 진행률을 얻고 있습니다.

class projects(LoginRequiredMixin, ListView):
    model = Project
    template_name = 'project_list.html'
    ordering = ['project_title']
    paginate_by = 10
    queryset = Project.objects.annotate(
        todo_done=Count('todo', filter=Q(todo__state=True)) * 100 / Count('todo'),
        todo_left=Count('todo', filter=Q(todo__state=False)) * 100 / Count('todo'),
    )

프로젝트에는 12 개의 작업이 있고 8 개는 완료되고 4 개는 진행 중입니다. 시스템은 완료율 66 %, 진행률 33 %를 반환하며 합계는 100 %가 아니라 99 %입니다.

{{ project.todo_done }}
{{ project.todo_left }}

여기에 이미지 설명 입력

1 %가 누락 되었기 때문에 막대의 일부가 비어 있습니다. 나는 다음과 같이 원형을 사용하려고 시도하지만 불가능합니다

todo_done=round(Count('todo', filter=Q(todo__state=True)) * 100 / Count('todo')),
TypeError: type CombinedExpression doesn't define __round__ method
빌렘 반 온셈

Python의 round는 데이터베이스 표현식에 대해 전혀 이해하지 못하기 때문에 사용할 수 없습니다 . 그러나 Round[Django-doc] 표현식 을 사용할 수 있습니다 .

from django.db.models import F
from django.db.models.functions import Round

queryset = Project.objects.annotate(
    todo_done=Round(Count('todo', filter=Q(todo__state=True)) * 100 / Count('todo')),
    todo_left=100*Count('todo') - F('todo_done'),
)

는 IF stateTodo의 만 할 수있다 True거나 False, 그것을 뺄 더 나은 아마 todo_done100 배에서 Count('todo')일반적으로 과정이 없습니다로하지 않는 두, 100 합계 것이라는 점을 보장 그 이후 에는 관련 Todo들.

일부 데이터베이스는 두 피연산자가 정수인 경우 정수 나눗셈을 사용합니다 FloatField. 이를 다음으로 캐스트하여이를 방지 할 수 있습니다 .

from django.db.models import F, FloatField
from django.db.models.functions import Cast, Round

queryset = Project.objects.annotate(
    todo_done=Round(
        Cast(Count('todo', filter=Q(todo__state=True)), output_field=FloatField())
        * 100 / Count('todo')
    ),
    todo_left=100*Count('todo') - F('todo_done'),
)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

MySQL 라운드 및 하위 쿼리

분류에서Dev

장고 쿼리 셋. 하나의 쿼리로 다른 필드에 주석 달기

분류에서Dev

장고의 쿼리 셋에 필드 추가하기

분류에서Dev

하위 문서 배열의 범위 쿼리에 가장 적합한 샤드 키 (또는 최적화 된 쿼리)

분류에서Dev

장고 뷰 제한 하위 쿼리

분류에서Dev

어떻게 저장하고 봄 데이터 MongoDB의 쿼리 동적 필드가?

분류에서Dev

애플리케이션을 전면에 배치하지 않고 백그라운드 처리를 위해 BLE 장치에서 iOS 앱을 제어하는 방법

분류에서Dev

코드에서 Couchbase 뷰 생성 : 첫 번째 쿼리는 0 개의 행을 반환하고 인덱스는 백그라운드에서 빌드됩니다.

분류에서Dev

MongoDb에서 필드의 고유 값 수를 계산하는 하위 쿼리

분류에서Dev

두 개의 하위 쿼리를 결합하고 하나의 필드 : 두 개의 하위 쿼리 결과 나누기

분류에서Dev

하위 쿼리의 라 라벨 합계

분류에서Dev

장고 쿼리 하나 개의 필드는 중복이고 다른 하나는 다른 곳

분류에서Dev

iBeacon이 백그라운드에서 광고 패킷을 계속 전송하지만 다른 범위 지정 장치에 의해 손실 됨

분류에서Dev

백그라운드에서 스크린 샷을 찍고 저장하기 전에 처리

분류에서Dev

장고. JOIN 쿼리의 모든 필드를 가져오고 모두 GROUP BY하는 방법

분류에서Dev

장고 쿼리 ManytoMany 필드

분류에서Dev

백그라운드 프로세스의 부분 출력을 파이프하고 변수에 저장

분류에서Dev

Elasticsearch 쿼리의 하위 필드

분류에서Dev

Like의 하위 쿼리 필드

분류에서Dev

Like의 하위 쿼리 필드

분류에서Dev

장고 주석 쿼리는 역의 관계에서 불과 최신 카운트하기

분류에서Dev

Android가 푸시 알림을 수신하고 포 그라운드 또는 백그라운드에서 처리

분류에서Dev

SQL 서버에서 가장 가까운 숫자를 찾고 관련 할인을 반환하기위한 쿼리

분류에서Dev

서버 디렉토리에 저장된 파일을 다운로드하기위한 xpages의 Lotus Notes 클라이언트 링크 및 브라우저 링크

분류에서Dev

장고 쿼리 셋을 사용하여 다 대일 필드의 값으로 정렬 하시겠습니까?

분류에서Dev

특정 제약 조건을 고려하여 라운드 로빈 리그 일정을 무작위로 지정

분류에서Dev

하위 양식의 선택에 따라 보고서 저장

분류에서Dev

하위 메뉴 (드롭 다운)가 잘리고 모바일 장치에 표시되지 않음

분류에서Dev

직렬 백그라운드 스레드를 만들고 관리하는 방법

Related 관련 기사

  1. 1

    MySQL 라운드 및 하위 쿼리

  2. 2

    장고 쿼리 셋. 하나의 쿼리로 다른 필드에 주석 달기

  3. 3

    장고의 쿼리 셋에 필드 추가하기

  4. 4

    하위 문서 배열의 범위 쿼리에 가장 적합한 샤드 키 (또는 최적화 된 쿼리)

  5. 5

    장고 뷰 제한 하위 쿼리

  6. 6

    어떻게 저장하고 봄 데이터 MongoDB의 쿼리 동적 필드가?

  7. 7

    애플리케이션을 전면에 배치하지 않고 백그라운드 처리를 위해 BLE 장치에서 iOS 앱을 제어하는 방법

  8. 8

    코드에서 Couchbase 뷰 생성 : 첫 번째 쿼리는 0 개의 행을 반환하고 인덱스는 백그라운드에서 빌드됩니다.

  9. 9

    MongoDb에서 필드의 고유 값 수를 계산하는 하위 쿼리

  10. 10

    두 개의 하위 쿼리를 결합하고 하나의 필드 : 두 개의 하위 쿼리 결과 나누기

  11. 11

    하위 쿼리의 라 라벨 합계

  12. 12

    장고 쿼리 하나 개의 필드는 중복이고 다른 하나는 다른 곳

  13. 13

    iBeacon이 백그라운드에서 광고 패킷을 계속 전송하지만 다른 범위 지정 장치에 의해 손실 됨

  14. 14

    백그라운드에서 스크린 샷을 찍고 저장하기 전에 처리

  15. 15

    장고. JOIN 쿼리의 모든 필드를 가져오고 모두 GROUP BY하는 방법

  16. 16

    장고 쿼리 ManytoMany 필드

  17. 17

    백그라운드 프로세스의 부분 출력을 파이프하고 변수에 저장

  18. 18

    Elasticsearch 쿼리의 하위 필드

  19. 19

    Like의 하위 쿼리 필드

  20. 20

    Like의 하위 쿼리 필드

  21. 21

    장고 주석 쿼리는 역의 관계에서 불과 최신 카운트하기

  22. 22

    Android가 푸시 알림을 수신하고 포 그라운드 또는 백그라운드에서 처리

  23. 23

    SQL 서버에서 가장 가까운 숫자를 찾고 관련 할인을 반환하기위한 쿼리

  24. 24

    서버 디렉토리에 저장된 파일을 다운로드하기위한 xpages의 Lotus Notes 클라이언트 링크 및 브라우저 링크

  25. 25

    장고 쿼리 셋을 사용하여 다 대일 필드의 값으로 정렬 하시겠습니까?

  26. 26

    특정 제약 조건을 고려하여 라운드 로빈 리그 일정을 무작위로 지정

  27. 27

    하위 양식의 선택에 따라 보고서 저장

  28. 28

    하위 메뉴 (드롭 다운)가 잘리고 모바일 장치에 표시되지 않음

  29. 29

    직렬 백그라운드 스레드를 만들고 관리하는 방법

뜨겁다태그

보관