Django 프레임워크 데이터 집합 함수

5950 단어 Django
ORM모델에 대해 집합 함수를 사용하여 데이터 연산 후의 결과를 얻을 수 있다.Django의 집합 함수는 모두 aggregateannotate 방법을 통해 호출된 것이다.
  • 모든 집합 함수는 django.db.models 아래에 있다.
  • 집합 함수는 단독으로 실행할 수 없으며, 집합 함수를 실행할 수 있는 aggregateannotate 방법에 두어야 한다.
  • 집합 함수는 문자열 형식으로 호출 함수 필드에 전송됩니다.
  • aggregate는 대상QuerySet을 되돌려주지 않고 사전을 되돌려줍니다.
  • aggregate에서 실행된 집합 함수를 통해 결과를 저장하는 사전을 되돌려줍니다. 사전 키는 시스템이 자동으로 생성한 __ (전소문자)입니다.집합 함수가 되돌아오는 결과를 이름을 지으려면 함수를 사용할 때 키워드 파라미터를 전달할 수 있으며, 파라미터의 이름은 되돌아오는 결과의 이름 (즉 사전의 키 이름) 이다.
  • 집합 함수를 사용할 때 역인용을 사용할 수 있으며 현재 모델과 관련된 모델의 집합 결과를 계산하는 데 사용된다.

  • 집합 함수를 사용할 때 역방향 인용을 사용하는데 그 실현 방법은 역방향 인용과 같다. 즉, 전입related_name__field이다.
      다음은 상용 집합 함수
    문서 목록
  • 1.Avg
  • 2.Count
  • 3.Max 및 Min
  • 4.Sum
  • aggregate와annotate의 차이
  • 1.Avg
    평균값을 구하고 모든 도서의 평균 가격을 얻으려면 다음과 같은 코드를 사용하여 실현할 수 있다.
    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라는 필드를 추가하는데 이 필드의 데이터 출처는 모델BookStoreprice 필드의 종합이다.values 방법은 nametotal 두 필드의 값만 추출합니다. 
    aggregate와 annotate의 차이
  • aggregate: 집합 함수를 사용한 결과
  • 를 되돌려줍니다
  • annotate: 원래 모델에 필드를 어떻게 추가하는지, 이 필드의 값은 집합 함수의 결과이며, 집합 함수를 사용할 때 현재 모델의 메인 키를 사용하여 그룹을 나눈다(group by).
  • 사용aggregate: 현재 모델의 모든 실례의 집합 결과를 계산한다.
  • 사용annotate: 각 실례와 관련된 모든 데이터의 집합 결과를 계산한다.

  • 예를 들어 Author표의 각 작가의 문장 수를 계산한다.

    좋은 웹페이지 즐겨찾기