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에 따라 라이센스가 부여됩니다.