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


Python Django QuerySet.alias用法及代码示例


本文介绍 django.db.models.query.QuerySet.alias 的用法。

声明

alias(*args, **kwargs)
Django 3.2 中的新函数。

annotate() 相同,但不是在 QuerySet 中注释对象,而是保存表达式以供以后与其他 QuerySet 方法一起使用。当不需要表达式本身的结果但它用于过滤、排序或作为复杂表达式的一部分时,这很有用。不选择未使用的值会从数据库中删除多余的工作,这应该会带来更好的性能。

例如,如果您想查找超过 5 个条目的博客,但对条目的确切数量不感兴趣,您可以这样做:

>>> from django.db.models import Count
>>> blogs = Blog.objects.alias(entries=Count('entry')).filter(entries__gt=5)

alias() 可以与 annotate() exclude() filter() order_by() update() 结合使用。要将别名表达式与其他方法(例如 aggregate() )一起使用,您必须将其提升为注释:

Blog.objects.alias(entries=Count('entry')).annotate(
    entries=F('entries'),
).aggregate(Sum('entries'))

filter() order_by() 可以直接接受表达式,但表达式的构造和使用通常不会发生在同一个地方(例如,QuerySet 方法创建表达式,以供以后在视图中使用)。 alias() 允许逐步构建复杂的表达式,可能跨越多个方法和模块,通过别名引用表达式部分,并且仅使用 annotate() 作为最终结果。

相关用法


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