本文介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。