Spec-Zone.ru › Django 5.2

Определения запросов, специфичные для PostgreSQL

Эти выражения доступны из модуля django.contrib.postgres.expressions.

ArraySubquery() выражения

class ArraySubquery(queryset) [source]

ArraySubquery — это Subquery, который использует конструктор PostgreSQL ARRAY для создания списка значений из набора результатов запроса, который должен использовать QuerySet.values() для возврата только одного столбца.

Этот класс отличается от ArrayAgg тем, что он не является агрегатной функцией и не требует условия SQL GROUP BY для создания списка значений.

Например, если вы хотите добавить аннотацию всех связанных книг к автору как JSON-объекты:

>>> 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}]

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.2/ref/contrib/postgres/expressions/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API