当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django ArraySubquery用法及代码示例


本文介绍 django.contrib.postgres.expressions.ArraySubquery 的用法。

声明

class ArraySubquery(queryset)
Django 4.0 中的新函数。

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

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.contrib.postgres.expressions.ArraySubquery。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。