Reputation: 611
I want to call same function from another class-object. I try this but doesn't work.Any help please.
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"/>
Upvotes: 0
Views: 960
Reputation: 1590
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"/>
Upvotes: 1
Reputation: 41
One way of doing this is that you can consider ClassA as base/parent class and inherit it in both ClassB and ClassC. Hence, you will be able to access ClassA's attributes and methods from its child classes, that is, ClassB and ClassC.
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"/>
Alternatively, you can define the action_button
method as a static method.
@staticmethod
def action_button():
Now, you will be able to use this method by calling ClassA.action_button()
from any class.
Upvotes: 1