Bagaimana untuk Mencapai Fungsi GROUP_CONCAT MySQL dalam Django?

Patricia Arquette
Lepaskan: 2024-11-19 21:05:03
asal
653 orang telah melayarinya

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

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')
Salin selepas log masuk

Ini akan mengembalikan Set Pertanyaan dengan hasil yang diingini:

apple, 2, "fuji,mac"
orange, 1, "navel"
Salin selepas log masuk

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!

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