本文介紹 django.db.models.FilteredRelation 的用法。
聲明
class FilteredRelation(relation_name, *, condition=Q())
FilteredRelation 與 一起使用,以在執行 annotate() JOIN 時創建 ON 子句。它不作用於默認關係,而是作用於注解名稱(下麵示例中的pizzas_vegetarian)。
例如,要查找名稱中帶有 'mozzarella' 的素食比薩餅的餐廳:
>>> from django.db.models import FilteredRelation, Q
>>> Restaurant.objects.annotate(
... pizzas_vegetarian=FilteredRelation(
... 'pizzas', condition=Q(pizzas__vegetarian=True),
... ),
... ).filter(pizzas_vegetarian__name__icontains='mozzarella')
如果有大量比薩餅,則此查詢集的性能優於:
>>> Restaurant.objects.filter(
... pizzas__vegetarian=True,
... pizzas__name__icontains='mozzarella',
... )
因為第一個查詢集的WHERE 子句中的過濾隻會對素食比薩餅起作用。
FilteredRelation 不支持:
和QuerySet.only()。prefetch_related()- 從父模型繼承的
。GenericForeignKey
在 Django 3.2 中更改:
添加了對嵌套關係的支持。
相關用法
- Python OpenCV Filter2D()用法及代碼示例
- Python Django File.save用法及代碼示例
- Python File next()用法及代碼示例
- Python File tell()用法及代碼示例
- Python File seek()用法及代碼示例
- Python File writable()用法及代碼示例
- Python File close()用法及代碼示例
- Python Django FileField.upload_to用法及代碼示例
- Python File flush()用法及代碼示例
- Python File write()用法及代碼示例
- Python File readline()用法及代碼示例
- Python File read()用法及代碼示例
- Python Django FilePathField.path用法及代碼示例
- Python File truncate()用法及代碼示例
- Python File fileno()用法及代碼示例
- Python File open()用法及代碼示例
- Python File isatty()用法及代碼示例
- Python File readlines()用法及代碼示例
- Python File seekable()用法及代碼示例
- Python File readable()用法及代碼示例
- Python File writelines()用法及代碼示例
- Python Django Field.description用法及代碼示例
- Python Django Field.type_name用法及代碼示例
- Python Django Field.help_text用法及代碼示例
- Python Django Field.width用法及代碼示例
注:本文由純淨天空篩選整理自djangoproject.com大神的英文原創作品 django.db.models.FilteredRelation。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
