Как в Django выполнить GROUP BY
Python
Senior
Без компании
Как в Django выполнить GROUP BY
Ответы
В Django GROUP BY выполняется с помощью методов `annotate()` и `values()` QuerySet.
**Пример:**
```
from django.db.models import Count
from myapp.models import Book
# Группировка по полю 'author' с подсчётом количества книг
result = Book.objects.values('author').annotate(total=Count('id'))
```
**Различия:**
- `values('field')` указывает поля для группировки
- `annotate()` добавляет агрегацию (Count, Sum, Avg и др.)
**Важно:** порядок методов имеет значение! Сначала `values()`, затем `annotate()`.
Для более сложных группировок можно использовать `F()`-выражения или кастомные SQL через `extra()`.