summaryrefslogtreecommitdiff
path: root/django/db/models/fields
diff options
context:
space:
mode:
authorNick Pope <nick@nickpope.me.uk>2023-10-16 19:07:49 +0100
committerNatalia <124304+nessita@users.noreply.github.com>2023-10-23 14:53:13 -0300
commitbbe90f3c00eb29a8e86b1b638466029def7f444a (patch)
tree65da457c751460bb3d42e56d557e34a5c219a7bb /django/db/models/fields
parent711c0547224de00aee39b8720c706ac4977e89fd (diff)
[5.0.x] Refs #34899 -- Extracted Field.flatchoices to flatten_choices helper function.
Co-authored-by: Natalia Bidart <124304+nessita@users.noreply.github.com> Backport of 74afcee234f8be989623ccc7c28b9fb97fb548f0 from main
Diffstat (limited to 'django/db/models/fields')
-rw-r--r--django/db/models/fields/__init__.py21
1 files changed, 8 insertions, 13 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index f15b5856bf..6174b7bc98 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -15,7 +15,11 @@ from django.db import connection, connections, router
from django.db.models.constants import LOOKUP_SEP
from django.db.models.query_utils import DeferredAttribute, RegisterLookupMixin
from django.utils import timezone
-from django.utils.choices import CallableChoiceIterator, normalize_choices
+from django.utils.choices import (
+ CallableChoiceIterator,
+ flatten_choices,
+ normalize_choices,
+)
from django.utils.datastructures import DictWrapper
from django.utils.dateparse import (
parse_date,
@@ -1080,19 +1084,10 @@ class Field(RegisterLookupMixin):
"""
return str(self.value_from_object(obj))
- def _get_flatchoices(self):
+ @property
+ def flatchoices(self):
"""Flattened version of choices tuple."""
- if self.choices is None:
- return []
- flat = []
- for choice, value in self.choices:
- if isinstance(value, (list, tuple)):
- flat.extend(value)
- else:
- flat.append((choice, value))
- return flat
-
- flatchoices = property(_get_flatchoices)
+ return list(flatten_choices(self.choices))
def save_form_data(self, instance, data):
setattr(instance, self.name, data)