我想从另一个类对象调用相同的函数。我尝试了一下,但是没有用。请任何帮助。
class ClassA(models.Model):
_name = 'class.a'
def action_button(self):
......
}
class ClassB(models.Model):
_name = 'class.b'
def call_func_b(self):
self.env["class.b"].action_button()
<button name="call_func_b" type="object" string="Create Action b"/>
class ClassC(models.Model):
_name = 'class.c'
def call_func_c(self):
self.env["class.c"].action_button()
<button name="call_func_c" type="object" string="Create Action c"/>
答案 0 :(得分:1)
执行此操作的一种方法是,您可以将ClassA视为基类/父类,并在ClassB和ClassC中继承它。因此,您将可以从其子类ClassB和ClassC访问ClassA的属性和方法。
class ClassA(models.Model):
_name = 'class.a'
def action_button(self):
......
}
class ClassB(ClassA):
_name = 'class.b'
def call_func_b(self):
self.action_button()
<button name="call_func_b" type="object" string="Create Action b"/>
class ClassC(ClassA):
_name = 'class.c'
def call_func_c(self):
self.action_button()
<button name="call_func_c" type="object" string="Create Action c"/>
或者,您可以将action_button
方法定义为静态方法。
@staticmethod
def action_button():
现在,您可以通过从任何类调用ClassA.action_button()
来使用此方法。
答案 1 :(得分:1)
class ClassA(models.Model):
_name = 'class.a'
@api.model
def action_button(self):
# you can return action here if you want
return action
}
class ClassB(models.Model):
_name = 'class.b'
def call_func_b(self):
#use return to pass data to client;
#env["class.a"] finds model with provided name, you used same same models name
return self.env["class.a"].action_button()
<button name="call_func_b" type="object" string="Create Action b"/>
class ClassC(models.Model):
_name = 'class.c'
def call_func_c(self):
return self.env["class.a"].action_button()
<button name="call_func_c" type="object" string="Create Action c"/>