Unterstützt ArrayAgg nur einzelne Felder?In Django unterstützt die PostgreSQL-spezifische Funktion ArrayAgg nicht mehrere Felder?
Ich bemerke, dass der von ArrayAgg in django erzeugte Befehl keine Klammern innerhalb von array_agg() hat, was einfach array_agg('field1','field2')
ist, was Syntaxfehler bei mehreren Feldern verursacht und nur buchstäblich nur einzelne Felder unterstützt. Ich denke, array_agg(('field1','field2'))
kann mehrere Felder unterstützen.
Wer weiß, ob ArrayAgg nur einzelne Felder wirklich unterstützt. Und wenn es irgendeine Möglichkeit gibt, die gleiche Funktion in Django zu erreichen. Dank
Abfrage:
Organisation.objects.values('id').annotate(results=ArrayAgg('phones__number','phones__kind','phones__comment'))
connection.queries:
SELECT "iss_organisation"."id", ARRAY_AGG("iss_phone"."number", "iss_phone"."kind", "iss_phone"."comment") AS "results" FROM "iss_organisation" LEFT OUTER JOIN "iss_phone" ON ("iss_organisation"."id" = "iss_phone"."object_id" AND ("iss_phone"."content_type_id" = 37)) GROUP BY "iss_organisation"."id"
ProgrammingError: function array_agg (Rolle variiert wird, Variieren Charakter, Charakter unterschiedlicher) nicht vorhanden Zeile 1: SELECT "iss_organisation" . "ID", ARRAY_AGG ("iss_phone". "numbe ... ^ HINWEIS: Keine Funktion stimmt mit den angegebenen Namen und Argumenttypen überein. Möglicherweise müssen Sie explizite Typumwandlungen hinzufügen.
Ich denke, wenn ARRAY_AGG("iss_phone"."number", "iss_phone"."kind", "iss_phone"."comment")
mit ARRAY_AGG(("iss_phone"."number", "iss_phone"."kind", "iss_phone"."comment"))
ersetzt werden kann, würde es funktionieren.
Geben Sie den gesamten Code/die Abfrage ein. – ultrajohn