在odoo加载时如何调用函数

时间:2019-01-29 09:51:55

标签: python odoo

我在odoo上工作时遇到问题,问题是我想在某些视图触发时加载或调用函数

这是我的视图XML

 <page string="Current Allocated" id="curent_book_id">
                          <field name='book_transactions_id' domain="[('name', '=', 'Odoo Basics')]">
                            <tree>
                              <!-- <field name="code">self.check_date()</field> -->
                              <field name="auto_date_check" invisible="1" />
                              <field name='from_date'/>
                              <field name='end_date'/>
                              <field name='students_id'/>
                            </tree>
                           </field>

                       </page>

和型号代码:

    from_date = fields.Date(string='From Date',default=datetime.today())
    current_status = fields.Boolean(default=True)
    end_date = fields.Date(string='End Date')
    books_id = fields.Many2many('library.books', ondelete='cascade', string="Book Name")
    students_id = fields.Many2many('library.student',string='Student RollNo')
    auto_date_check = fields.Char(compute='check_date', store=False)

    @api.onchange('auto_date_check')
    def check_date(self):

        return {
                'warning': {
                            'title': "Something bad happened",
                            'message': "It was very bad indeed",
                            }`enter code here`
                }

1 个答案:

答案 0 :(得分:0)

您可以尝试以下可能性:

如果您尝试在创建记录之前执行一种方法,请使用“ default_get()”方法,这将是每次创建新记录时首先执行的方法。

如果每次加载视图时都试图执行方法,请确保Compute method每次加载视图时都会计算字段的值。但是,如果将计算字段存储到数据库中,则只有在创建或更新/写入该记录时才会触发

如果您尝试执行方法,则在Odoo服务器启动时,请在对象中使用“ init ()”方法来执行任务。

Reference Link