﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
32554	Add Q.empty(), Q.TRUE, Q.FALSE, Q.any(), and Q.all()	jonathan-golorry	jonathan-golorry	"`Q.empty()` checks for nested empty Q objects such as `Q(Q())`. See #32549 for rationale.

`Q.FALSE` and `Q.TRUE` are classattribute aliases for `Q(pk__in=[])` and `~Q(pk__in=[])`.

`Q.any()` and `Q.all()` mimic python's builtin `any` and `all`, defaulting to `Q.FALSE` and `Q.TRUE` for empty iterators (or iterators containing only empty Q objects).

Patch: https://github.com/django/django/pull/14159

See this forum thread discussing why these are an improvement over many ad-hoc implementations people are using: https://forum.djangoproject.com/t/improving-q-objects-with-true-false-and-none/851"	New feature	closed	Database layer (models, ORM)	dev	Normal	wontfix	Q objects, any, all		Unreviewed	1	1	0	0	0	0
