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)
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')
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!