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

Bagaimana untuk Meniru Fungsi GROUP_CONCAT MySQL dalam Django?

Mary-Kate Olsen
Lepaskan: 2024-11-19 00:04:02
asal
524 orang telah melayarinya

How to Replicate MySQL's GROUP_CONCAT Functionality in Django?

Dapatkan Fungsi GROUP_CONCAT dalam Django

Meluaskan konsep GROUP_CONCAT dalam MySQL, Django menawarkan pendekatan alternatif untuk mencapai hasil yang serupa. Dalam Django, GROUP_CONCAT boleh dicontohi melalui penggunaan Fungsi Agregat tersuai.

Mencipta Fungsi Agregat 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)
Salin selepas log masuk

Dengan Fungsi Agregat tersuai ini, anda kini boleh melakukan operasi GROUP_CONCAT dalam Django set pertanyaan.

Contoh Penggunaan:

Pertimbangkan jadual Buah-buahan dengan data berikut:

id type name
0 apple fuji
1 apple mac
2 orange navel

Untuk mendapatkan kiraan jenis buah yang berbeza bersama-sama dengan senarai nama mereka yang dipisahkan koma:

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

Set pertanyaan ini akan mengembalikan keputusan berikut:

type count name
apple 2 fuji,mac
orange 1 navel

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan