Heim > Datenbank > MySQL-Tutorial > Wie erreicht man die GROUP_CONCAT-Funktionalität von MySQL in Django?

Wie erreicht man die GROUP_CONCAT-Funktionalität von MySQL in Django?

Patricia Arquette
Freigeben: 2024-11-19 21:05:03
Original
703 Leute haben es durchsucht

How to Achieve MySQL's GROUP_CONCAT Functionality in Django?

Djangos Äquivalent zu MySQLs GROUP_CONCAT

GRUPPE_CONCAT ist in Django nicht integriert, kann aber mithilfe einer benutzerdefinierten Aggregatfunktion emuliert werden.

Erstellen einer benutzerdefinierten Aggregatfunktion

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)
Nach dem Login kopieren

Diese Klasse definiert die Funktion GROUP_CONCAT und ihr Verhalten.

Verwenden der benutzerdefinierten Aggregatfunktion

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')
Nach dem Login kopieren

Dadurch wird ein QuerySet mit dem gewünschten zurückgegeben Ergebnisse:

apple, 2, "fuji,mac"
orange, 1, "navel"
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage