Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencapai Fungsi GROUP_CONCAT MySQL dalam Django?

Bagaimana untuk Mencapai Fungsi GROUP_CONCAT MySQL dalam Django?

Patricia Arquette
Patricia Arquetteasal
2024-11-19 21:05:03714semak imbas

How to Achieve MySQL's GROUP_CONCAT Functionality in Django?

Django's Equivalent to MySQL's GROUP_CONCAT

Django, GROUP_CONCAT tidak terbina dalam, tetapi ia boleh dicontohi menggunakan Fungsi Agregat tersuai.

Mencipta Fungsi Agregat Tersuai

Untuk mencipta Fungsi Agregat tersuai untuk GROUP_CONCAT, ikut langkah berikut:

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)

Kelas ini mentakrifkan fungsi GROUP_CONCAT dan kelakuannya.

Menggunakan Fungsi Agregat Tersuai

Untuk menggunakan Fungsi Agregat tersuai anda, cuma masukkannya dalam pertanyaan anda seperti berikut:

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

Ini akan mengembalikan Set Pertanyaan dengan hasil yang diingini:

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

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi GROUP_CONCAT MySQL dalam Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn