ホームページ >データベース >mysql チュートリアル >Django で MySQL の GROUP_CONCAT 機能を実現するにはどうすればよいですか?
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')
これにより、目的の結果を含む QuerySet が返されます:
apple, 2, "fuji,mac" orange, 1, "navel"
以上がDjango で MySQL の GROUP_CONCAT 機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。