diff --git a/trytond/trytond/model/modelview.py b/trytond/trytond/model/modelview.py index f9d82206cf..18a06e9ab3 100644 --- a/trytond/trytond/model/modelview.py +++ b/trytond/trytond/model/modelview.py @@ -170,6 +170,7 @@ class ModelView(Model): depend = depend[len('_parent_'):] if dep_field := getattr(cls, depend, None): if (isinstance(dep_field, fields.Function) + and dep_field.getter and dep_field.getter.startswith('on_change_with')): meth_names.append(dep_field.getter) diff --git a/trytond/trytond/tests/test_field_depends.py b/trytond/trytond/tests/test_field_depends.py index 3d0adc12af..cae0d2a061 100644 --- a/trytond/trytond/tests/test_field_depends.py +++ b/trytond/trytond/tests/test_field_depends.py @@ -273,8 +273,9 @@ class FieldDependsTestCase(TestCase): test = fields.Char("Test") foo = fields.Function(fields.Char("Foo"), 'on_change_with_foo') bar = fields.Char("Bar") + baz = fields.Function(fields.Char("Baz")) - @fields.depends('foo') + @fields.depends('foo', 'baz') def on_change_test(self): pass @@ -282,7 +283,12 @@ class FieldDependsTestCase(TestCase): def on_change_with_foo(self, name=None): pass + @classmethod + def column_baz(cls, tables): + t, _ = tables[None] + return t.bar + Model.__setup__() Model.__post_setup__() - self.assertEqual(Model.test.on_change, {'foo', 'bar'}) + self.assertEqual(Model.test.on_change, {'foo', 'bar', 'baz'})