2017-02-19 29 views
0

ArrayAgg是否僅支持單個字段?在Django中,PostgreSQL特定函數ArrayAgg不支持多個字段?

我注意到由Django中的ArrayAgg生成的sql命令在array_agg()中沒有括號,這只是array_agg('field1','field2'),這會導致多個字段的語法錯誤,並且只能從字面上只支持單個字段。我估計array_agg(('field1','field2'))可以支持多個字段。

任何人都知道ArrayAgg是否真的支持單個字段。如果有什麼方法可以在Django中實現相同的功能。感謝

查詢:

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:功能ARRAY_AGG(字符改變,字符改變,字符改變)不存在 LINE 1:SELECT 「iss_organisation」 。「id」,ARRAY_AGG(「iss_phone」。「」numbe ... ^ 提示:沒有函數與給定的名稱和參數類型匹配,您可能需要添加明確的類型轉換

我認爲如果ARRAY_AGG("iss_phone"."number", "iss_phone"."kind", "iss_phone"."comment")可以替換爲ARRAY_AGG(("iss_phone"."number", "iss_phone"."kind", "iss_phone"."comment")),那就行了。

+0

發佈整個代碼/查詢。 – ultrajohn

回答