本文介绍 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()
相关用法
- Python Django QuerySet.annotate用法及代码示例
- Python Django QuerySet.aggregate用法及代码示例
- Python Django QuerySet.select_related用法及代码示例
- Python Django QuerySet.union用法及代码示例
- Python Django QuerySet.latest用法及代码示例
- Python Django QuerySet.values用法及代码示例
- Python Django QuerySet.intersection用法及代码示例
- Python Django QuerySet.get用法及代码示例
- Python Django QuerySet.none用法及代码示例
- Python Django QuerySet.exclude用法及代码示例
- Python Django QuerySet.get_or_create用法及代码示例
- Python Django QuerySet.update_or_create用法及代码示例
- Python Django QuerySet.prefetch_related用法及代码示例
- Python Django QuerySet.first用法及代码示例
- Python Django QuerySet.dates用法及代码示例
- Python Django QuerySet.values_list用法及代码示例
- Python Django QuerySet.select_for_update用法及代码示例
- Python Django QuerySet.order_by用法及代码示例
- Python Django QuerySet.bulk_update用法及代码示例
- Python Django QuerySet.in_bulk用法及代码示例
- Python Django QuerySet.defer用法及代码示例
- Python Django QuerySet.reverse用法及代码示例
- Python Django QuerySet.count用法及代码示例
- Python Django QuerySet.exists用法及代码示例
- Python Django QuerySet.explain用法及代码示例
注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.db.models.query.QuerySet.alias。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。