Skip to content

Commit bf45825

Browse files
committed
QuerySelectField: Add support for blank choice when using groups
1 parent d834798 commit bf45825

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ classifiers = [
1818
]
1919
requires-python = ">=3.9"
2020
dependencies = [
21-
"WTForms>=3.1",
21+
"WTForms>=3.1.2",
2222
"SQLAlchemy>=1.4",
2323
]
2424
dynamic = ["version"]

src/wtforms_sqlalchemy/fields.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,12 @@ def _get_object_list(self):
147147
self._object_list = list((str(get_pk(obj)), obj) for obj in query)
148148
return self._object_list
149149

150+
def _get_blank_choice(self):
151+
return (self.blank_value, self.blank_text, self.data is None, {})
152+
150153
def iter_choices(self):
151154
if self.allow_blank:
152-
yield (self.blank_value, self.blank_text, self.data is None, {})
155+
yield self._get_blank_choice()
153156

154157
for pk, obj in self._get_object_list():
155158
yield (pk, self.get_label(obj), obj == self.data, self.get_render_kw(obj))
@@ -159,6 +162,9 @@ def has_groups(self):
159162

160163
def iter_groups(self):
161164
if self.has_groups():
165+
if self.allow_blank:
166+
yield (None, [self._get_blank_choice()])
167+
162168
groups = defaultdict(list)
163169
for pk, obj in self._get_object_list():
164170
groups[self.get_group(obj)].append((pk, obj))

tests/test_main.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ class F(Form):
217217
self.assertEqual(
218218
form.d(),
219219
[
220+
(None, [("", "", True, {})]),
220221
(
221222
"a",
222223
[("hello1", "apple", False, {}), ("hello3", "apricot", False, {})],
@@ -260,6 +261,7 @@ class F(Form):
260261
self.assertEqual(
261262
form.d(),
262263
[
264+
(None, [("", "", False, {})]),
263265
(
264266
"a",
265267
[("hello1", "apple", False, {}), ("hello3", "apricot", True, {})],

0 commit comments

Comments
 (0)