在 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')
這將傳回包含所需結果的查詢集:
apple, 2, "fuji,mac" orange, 1, "navel"
以上是如何在Django中實現MySQL的GROUP_CONCAT功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!