odoo context 上下文使进入表单窗口自动填写默认值

博客介绍了Odoo中计算字段的相关参数。compute参数用于指定计算字段的方法名,通过Python代码动态计算值,依赖字段变化时会自动更新。inverse参数可将计算字段值反向写回其他字段,维护数据一致性。store参数决定计算结果是否存入数据库,存入可提升查询性能。

context


def action_return_document(self):
    # 处理归还档案的逻辑

    return {
        'name': '归还档案',
        'view_mode': 'form',  # 修改此处的键为 'view_mode'
        'res_model': 'document.return',#需要在这个model下写default_get方法 ,名字不能变
        'views': [(self.env.ref('document_management.view_form_document_return').id, 'form')],#对应模型.想打开的表单视图id
        'type': 'ir.actions.act_window',
        'target': 'new',#新开一个小窗口
        'context': {
            'document': self.name, #填写默认值
            'return_date': fields.Datetime.now(),
        }
    }
    
    
@api.model
def default_get(self, fields_list):
    res = super().default_get(fields_list)

    # 检查并使用上下文中的'document'来设置默认值
    document_name = self._context.get('document')
    if document_name:
        document = self.env['document'].search([('name', '=', document_name)], limit=1)
        if document:
           
            # 设置借阅记录的 borrow 和 return 时间
            res['document'] = document.id
           
    return res

注释写在代码中。

compute 使其计算得到 但是也可以修改值

添加inverse参数 和方法 方法直接传入pass即可。 store参数:是否存入数据库的意思。

return_date_limit = fields.Datetime(string='最迟归还时间', compute='_compute_return_date',                                        inverse='_inverse_return_date',  # 添加inverse方法
            store=True)


@api.depends('borrowing_date')
    def _compute_return_date(self):
        for record in self:
            if record.borrowing_date:  # 确保borrowing_date不为空再进行计算
                borrowing_date = fields.Datetime.from_string(record.borrowing_date)
                return_date_limit = borrowing_date + timedelta(days=15)
                record.return_date_limit = return_date_limit

    def _inverse_return_date(self):
        pass
  • compute参数:

    • compute是一个用于指定计算字段的方法名的参数。计算字段并不直接存储在数据库中,而是通过Python代码动态计算得出其值。在这个例子中,'_compute_return_date'就是一个计算方法,它负责根据其他字段的值或者其他业务逻辑来计算出return_date_limit字段的值。当依赖的字段发生变化时,Odoo会自动调用这个计算方法来更新计算字段的值。这使得你可以基于模型中的其他数据动态设置该字段。
  • inverse参数:

    • inverse参数指定的是一个可选的方法名,用于将计算字段的值“反向”写回到系统的其他字段中,以便当用户直接修改计算字段时,系统能相应地更新那些影响计算结果的基础字段。在这个场景下,'_inverse_return_date'方法会在用户手动更改return_date_limit字段值时被调用,从而允许系统根据这个新值去调整其它相关字段,维护数据的一致性。需要注意的是,并非所有计算字段都需要定义inverse方法,特别是当计算逻辑较为复杂或者直接修改计算字段没有明确的业务意义时。
  • store参数:

    • store=True表示虽然这是一个计算字段,但其计算结果会被存储在数据库中。这意味着一旦计算完成,该值可以被查询而无需每次都重新计算,提升了查询性能。如果设置为store=False,则每次需要该字段值时都会执行计算方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值