djangodocs.org

1413 sections across all versions Narrow to Django 6.0 (current) →

Using F() in filters

Reference Query Expressions

F() is also very useful in QuerySet filters, where they make it possible to filter a set of objects against criteria based on their field values, rather than on Python values. This is documented in using F() expressions in queries.

dev

Topic guide Making queries

NOTE: The behavior of filter() for queries > that span multi-value relationships, as described above, is not implemented > equivalently for exclude(). Instead, > the conditions in a single exclude() > call will not necessarily refer to the same item.

dev

Using F() in filters

Reference Query Expressions Built-in ExpressionsF() expressions

F() is also very useful in QuerySet filters, where they make it possible to filter a set of objects against criteria based on their field values, rather than on Python values. This is documented in using F() expressions in queries.

4.2 5.0 5.1 5.2 6.0

Filtering on annotations

Topic guide Aggregation Aggregations and other QuerySet clausesfilter() and exclude()

It’s more efficient to use QuerySet.filter() to exclude > rows. The aggregation filter argument is only useful when using two or > more aggregations over the same relations with different conditionals.

4.2 5.0 5.1 5.2 6.0

Topic guide Aggregation Aggregations and other QuerySet clausesfilter() and exclude()

When developing a complex query that involves both annotate() and filter() clauses, pay particular attention to the order in which the clauses are applied to the QuerySet.

4.2 5.0 5.1 5.2 6.0

order_by()

Topic guide Aggregation Aggregations and other QuerySet clauses

For example, to order a QuerySet of books by the number of authors that have contributed to the book, you could use the following query:

4.2 5.0 5.1 5.2 6.0

values()

Topic guide Aggregation Aggregations and other QuerySet clauses

Ordinarily, annotations are generated on a per-object basis - an annotated QuerySet will return one result for each object in the original QuerySet.

4.2 5.0 5.1 5.2 6.0

Topic guide Aggregation Aggregations and other QuerySet clausesvalues()

Fields that are mentioned in the order_by() part of a queryset are used when selecting the output data, even if they are not otherwise specified in the values() call.

4.2 5.0 5.1 5.2 6.0

Topic guide Aggregation Aggregations and other QuerySet clauses

When using the values() clause to group query results for annotations in MySQL with the ONLY_FULL_GROUP_BY SQL mode enabled, you may need to apply AnyValue if the annotation includes a mix of aggregate and non-aggregate expressions.

6.0

Topic guide Making queries Retrieving objectsLookups that span relationships

NOTE: The behavior of filter() for queries > that span multi-value relationships, as described above, is not implemented > equivalently for exclude(). Instead, > the conditions in a single exclude() > call will not necessarily refer to the same item.

4.2 5.0 5.1 5.2 6.0