diff options
| author | Nick Pope <nick@nickpope.me.uk> | 2023-10-16 19:11:18 +0100 |
|---|---|---|
| committer | Natalia <124304+nessita@users.noreply.github.com> | 2023-10-23 14:54:37 -0300 |
| commit | cc5901fa8edc25ce6d67d110c18ddf9f16965e32 (patch) | |
| tree | d0af62584c37f39f20caf04fab8193c1823a0d25 /django/db/models/fields/__init__.py | |
| parent | bbe90f3c00eb29a8e86b1b638466029def7f444a (diff) | |
[5.0.x] Fixed #34899 -- Added blank choice to forms' callable choices lazily.
Backport of 171f91d9ef5177850c2f12b26dd732785f6ac034 from main
Diffstat (limited to 'django/db/models/fields/__init__.py')
| -rw-r--r-- | django/db/models/fields/__init__.py | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index 6174b7bc98..205a41c193 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -16,6 +16,7 @@ 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 ( + BlankChoiceIterator, CallableChoiceIterator, flatten_choices, normalize_choices, @@ -1055,14 +1056,9 @@ class Field(RegisterLookupMixin): as <select> choices for this field. """ if self.choices is not None: - choices = list(self.choices) if include_blank: - blank_defined = any( - choice in ("", None) for choice, _ in self.flatchoices - ) - if not blank_defined: - choices = blank_choice + choices - return choices + return BlankChoiceIterator(self.choices, blank_choice) + return self.choices rel_model = self.remote_field.model limit_choices_to = limit_choices_to or self.get_limit_choices_to() choice_func = operator.attrgetter( |
