>백엔드 개발 >파이썬 튜토리얼 >group_by()를 사용하지 않고 Django에서 쿼리 결과를 그룹화하는 방법은 무엇입니까?

group_by()를 사용하지 않고 Django에서 쿼리 결과를 그룹화하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-04 08:14:12990검색

How to Group Query Results in Django Without Using group_by()?

Django에서 GROUP BY를 사용하여 쿼리

데이터베이스 모델을 쿼리할 때 결과를 특정 필드별로 그룹화해야 하는 경우가 종종 있습니다. 집계된 정보. Django에서는 이 기능이 group_by 메소드에서 직접 지원되지 않습니다. 그러나 Django 코드베이스를 수정하지 않고도 비슷한 결과를 얻을 수 있는 접근 방식은 여러 가지가 있습니다.

한 가지 접근 방식은 Django의 집계 기능을 활용하는 것입니다. Count 집계자는 지정된 필드별로 그룹화된 필드의 발생 횟수를 계산하는 데 사용할 수 있습니다. 예를 들어, 지정에 따라 구성원을 그룹화하고 각 지정의 발생 횟수를 계산하려면:

from django.db.models import Count
result = (Members.objects
    .values('designation')
    .annotate(dcount=Count('designation'))
    .order_by()
)

이 쿼리는 다음과 유사한 결과를 생성합니다.

[{'designation': 'Salesman', 'dcount': 2}, 
 {'designation': 'Manager', 'dcount': 2}]

값에 여러 필드가 포함될 수 있습니다. 추가 정보를 반환하는 인수입니다. 예:

    .values('designation', 'first_name', 'last_name')

Django 문서는 value(), annotate() 및 Count 구문에 대한 광범위한 정보를 제공합니다.

  • [Django 문서: 값()](https://docs.djangoproject.com/en/stable/ref/models/querysets/#values)
  • [Django 문서: annotate()](https://docs.djangoproject .com/en/stable/ref/models/querysets/#annotate)
  • [Django 문서: Count](https://docs.djangoproject.com/en/stable/ref/models/lookups/#count)

order_by() 인수를 제외하면 다음과 같은 결과가 발생할 수 있다는 점에 유의하는 것이 중요합니다. 특히 기본 정렬 동작이 바람직하지 않은 경우 예상치 못한 결과가 발생합니다.

위 내용은 group_by()를 사용하지 않고 Django에서 쿼리 결과를 그룹화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.