PostgreSQL-specifika frågeuttryckLink to this heading

Dessa uttryck är tillgängliga från modulen django.contrib.postgres.expressions.

uttryck för ArraySubquery()Link to this heading

class ArraySubquery(queryset)Link to this definition

ArraySubquery är en Subquery` som använder PostgreSQL ARRAY-konstruktören för att bygga en lista med värden från queryset, som måste använda QuerySet.values`() för att bara returnera en enda kolumn.

Den här klassen skiljer sig från ArrayAgg på så sätt att den inte fungerar som en aggregatfunktion och inte kräver en SQL GROUP BY-klausul för att bygga upp listan över värden.

Om du t.ex. vill annotera alla relaterade böcker till en författare som JSON-objekt:

Python console
>>> from django.db.models import OuterRef
>>> from django.db.models.functions import JSONObject
>>> from django.contrib.postgres.expressions import ArraySubquery
>>> books = Book.objects.filter(author=OuterRef("pk")).values(
...     json=JSONObject(title="title", pages="pages")
... )
>>> author = Author.objects.annotate(books=ArraySubquery(books)).first()
>>> author.books
[{'title': 'Solaris', 'pages': 204}, {'title': 'The Cyberiad', 'pages': 295}]