>데이터 베이스 >MySQL 튜토리얼 >Django에서 MySQL의 GROUP_CONCAT 기능을 구현하는 방법은 무엇입니까?

Django에서 MySQL의 GROUP_CONCAT 기능을 구현하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-19 21:05:03717검색

How to Achieve MySQL's GROUP_CONCAT Functionality in Django?

Django는 MySQL의 GROUP_CONCAT과 동일합니다

Django에는 GROUP_CONCAT이 내장되어 있지 않지만 사용자 정의 집계 함수를 사용하여 에뮬레이션할 수 있습니다.

사용자 정의 집계 함수 생성

GROUP_CONCAT에 대한 사용자 정의 집계 함수를 생성하려면 다음 단계를 따르십시오.

from django.db.models import Aggregate

class Concat(Aggregate):
    function = 'GROUP_CONCAT'
    template = '%(function)s(%(distinct)s%(expressions)s)'

    def __init__(self, expression, distinct=False, **extra):
        super(Concat, self).__init__(
            expression,
            distinct='DISTINCT ' if distinct else '',
            output_field=CharField(),
            **extra)

이 클래스는 GROUP_CONCAT 함수와 해당 동작을 정의합니다.

사용 사용자 정의 집계 함수

사용자 정의 집계 함수를 사용하려면 다음과 같이 쿼리에 이를 포함시키기만 하면 됩니다.

query_set = Fruits.objects.values('type').annotate(count=Count('type'),
                       name=Concat('name')).order_by('-count')

이렇게 하면 원하는 결과가 포함된 QuerySet이 반환됩니다.

apple, 2, "fuji,mac"
orange, 1, "navel"

위 내용은 Django에서 MySQL의 GROUP_CONCAT 기능을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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