當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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