Django 프레임워크 데이터 집합 함수
5950 단어 Django
ORM
모델에 대해 집합 함수를 사용하여 데이터 연산 후의 결과를 얻을 수 있다.Django
의 집합 함수는 모두 aggregate
와 annotate
방법을 통해 호출된 것이다.django.db.models
아래에 있다.aggregate
와 annotate
방법에 두어야 한다.aggregate
는 대상QuerySet
을 되돌려주지 않고 사전을 되돌려줍니다.aggregate
에서 실행된 집합 함수를 통해 결과를 저장하는 사전을 되돌려줍니다. 사전 키는 시스템이 자동으로 생성한 __
(전소문자)입니다.집합 함수가 되돌아오는 결과를 이름을 지으려면 함수를 사용할 때 키워드 파라미터를 전달할 수 있으며, 파라미터의 이름은 되돌아오는 결과의 이름 (즉 사전의 키 이름) 이다.집합 함수를 사용할 때 역방향 인용을 사용하는데 그 실현 방법은 역방향 인용과 같다. 즉, 전입
related_name__field
이다.다음은 상용 집합 함수
문서 목록
평균값을 구하고 모든 도서의 평균 가격을 얻으려면 다음과 같은 코드를 사용하여 실현할 수 있다.
from django.db.models import Avg
result = Book.objects.aggregate(my_avg=Avg('price'))
print(result["my_avg"])
2.Count
지정한 대상의 개수를 얻습니다.
Book
표에 있는 도서의 수를 얻으려면 다음과 같이 사용할 수 있습니다. from django.db.models import Count
result = Book.objects.aggregate(book_num=Count('id'))
Count
함수에는 또 하나의 매개 변수distinctt
가 있는데 기본값은 False
이고 True
이면 통계할 때 중복된 값을 계산하지 않는다. 예를 들어 다음과 같다. from djang.db.models import Count
result = Author.objects.aggregate(count=Count('email',distinct=True))
3. 맥스와 민
지정된 대상의 최대치와 최소치를 얻습니다.
Author
중 최대치와 최소치를 얻으려면 다음과 같이 하십시오.from django.db.models import Max,Min
result = Author.objects.aggregate(Max('age'),Min('age'))
4.Sum
지정 대상의 총회를 구하고 도서 판매 총액을 요구하면 다음과 같이 할 수 있다.
from djang.db.models import Sum
result = Book.objects.annotate(total=Sum("bookstore__price")).values("name","total")
상기 코드의
annotate
방법은 Book
표에 조회할 때 total
라는 필드를 추가하는데 이 필드의 데이터 출처는 모델BookStore
의price
필드의 종합이다.values
방법은 name
와 total
두 필드의 값만 추출합니다. aggregate와 annotate의 차이
aggregate
: 집합 함수를 사용한 결과annotate
: 원래 모델에 필드를 어떻게 추가하는지, 이 필드의 값은 집합 함수의 결과이며, 집합 함수를 사용할 때 현재 모델의 메인 키를 사용하여 그룹을 나눈다(group by).aggregate
: 현재 모델의 모든 실례의 집합 결과를 계산한다.annotate
: 각 실례와 관련된 모든 데이터의 집합 결과를 계산한다.예를 들어
Author
표의 각 작가의 문장 수를 계산한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.