GRUPPE_CONCAT ist in Django nicht integriert, kann aber mithilfe einer benutzerdefinierten Aggregatfunktion emuliert werden.
So erstellen Sie eine benutzerdefinierte Aggregatfunktion für GROUP_CONCAT, folgen Sie diesen Schritten:
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)
Diese Klasse definiert die Funktion GROUP_CONCAT und ihr Verhalten.
Um Ihre benutzerdefinierte Aggregatfunktion zu verwenden, ganz einfach Fügen Sie es wie folgt in Ihre Abfrage ein:
query_set = Fruits.objects.values('type').annotate(count=Count('type'), name=Concat('name')).order_by('-count')
Dadurch wird ein QuerySet mit dem gewünschten zurückgegeben Ergebnisse:
apple, 2, "fuji,mac" orange, 1, "navel"
Das obige ist der detaillierte Inhalt vonWie erreicht man die GROUP_CONCAT-Funktionalität von MySQL in Django?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!