Что такое объект класса Prefetch в Django
Python
Middle
Без компании
Что такое объект класса Prefetch в Django
Ответы
`Prefetch` в Django — это объект, позволяющий тонко настраивать предварительную загрузку связанных объектов (prefetch_related) с возможностью фильтрации и дополнительных условий.
**Пример:**
```
from django.db.models import Prefetch
# Загрузка только активных комментариев для каждой статьи
articles = Article.objects.prefetch_related(
Prefetch('comments', queryset=Comment.objects.filter(is_active=True))
)
```
**Ключевые моменты:**
- Позволяет использовать отдельный `queryset` для связанных объектов.
- Можно переименовывать атрибут с помощью `to_attr`.
- Работает только с `prefetch_related`, а не с `select_related`.
**Фильтрация с `to_attr`:**
```
Prefetch('comments', queryset=Comment.objects.filter(is_active=True), to_attr='active_comments')
```
Теперь `active_comments` будет доступен как список отфильтрованных комментариев.