From 2063c88c34566f46ad120c5b37c9926ffd3f10a6 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Thu, 11 Sep 2025 19:44:29 +0100 Subject: [PATCH] Fixed #36606 -- Optimized QuerySet.values_list(flat=True) without fields. --- django/db/models/query.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/django/db/models/query.py b/django/db/models/query.py index 0de5787f42..bd79e4bf36 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -1416,11 +1416,14 @@ class QuerySet(AltersData): def values_list(self, *fields, flat=False, named=False): if flat and named: raise TypeError("'flat' and 'named' can't be used together.") - if flat and len(fields) > 1: - raise TypeError( - "'flat' is not valid when values_list is called with more than one " - "field." - ) + if flat: + if len(fields) > 1: + raise TypeError( + "'flat' is not valid when values_list is called with more than one " + "field." + ) + elif not fields: + fields = [self.model._meta.concrete_fields[0].attname] field_names = {f: False for f in fields if not hasattr(f, "resolve_expression")} _fields = []