From 53eba3f8644f9472b442884140d7f9eee4e93c8a Mon Sep 17 00:00:00 2001 From: Scott Searcy Date: Thu, 9 May 2024 15:38:39 -0700 Subject: [PATCH] Columns with a default value should be optional If a column has a default value, then make the input field optional when generating a form object from a model. --- tests/test_main.py | 2 ++ wtforms_sqlalchemy/orm.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_main.py b/tests/test_main.py index 9172337..1a7a420 100755 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -457,11 +457,13 @@ class StudentDefaultScoreScalar(Model): def test_column_default_callable(self): student_form = model_form(self.StudentDefaultScoreCallable, self.sess)() self.assertEqual(student_form._fields["score"].default, 5) + assert not contains_validator(student_form.score, InputRequired) def test_column_default_scalar(self): student_form = model_form(self.StudentDefaultScoreScalar, self.sess)() assert not isinstance(student_form._fields["score"].default, ColumnDefault) self.assertEqual(student_form._fields["score"].default, 10) + assert not contains_validator(student_form.score, InputRequired) class ModelFormTest2(TestCase): diff --git a/wtforms_sqlalchemy/orm.py b/wtforms_sqlalchemy/orm.py index e5c3a51..d1933d8 100644 --- a/wtforms_sqlalchemy/orm.py +++ b/wtforms_sqlalchemy/orm.py @@ -120,7 +120,7 @@ def convert(self, model, mapper, prop, field_args, db_session=None): kwargs["default"] = default - if column.nullable: + if column.nullable or default is not None: kwargs["validators"].append(validators.Optional()) else: kwargs["validators"].append(validators.InputRequired())