Что такое Q objects в Django?

Middle
268 просмотров
AFK Offer AI

Q objects позволяют строить сложные WHERE-условия с OR, NOT, AND. Обычный filter() — только AND: filter(a=1, b=2). С Q: filter(Q(a=1) | Q(b=2)) — OR. ~Q(a=1) — NOT. Можно комбинировать: Q(a=1) & (Q(b=2) | Q(c=3)). Полезно для динамических фильтров: строишь Q-объект программно и передаёшь в filter(). Без Q невозможно сделать OR в Django ORM. Q objects — это по сути AST для WHERE-выражения, который Django компилирует в SQL.

Следующий вопрос

Как работает middleware в Python веб-фреймворках?