Check the existence of a getter before adding it to a field depends

Closes #15055
This commit is contained in:
Nicolas Évrard
2026-09-03 12:24:29 +02:00
parent acc3586deb
commit c2b3d6cc66
2 changed files with 9 additions and 2 deletions
+1
View File
@@ -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)
+8 -2
View File
@@ -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'})