Odoo:限制可编辑树上的可编辑行

问题描述

假设我有一棵可编辑的树

<tree editable="top">
    <field name="date">
    <field name="value">
</tree>

现在假设我想让用户编辑最近3个日期的值,但其他日期应保持只读状态。

我该怎么做?

解决方法

好吧,您可以在模型中添加一个布尔字段。这将是一个计算字段。根据该字段,您可以按如下方式应用只读属性:

class TheModel(models.Model):
    _name = 'The.Model'
    
    old_dated = fields.Boolean(compute='_old_dated_rec')
    date = fields.Date()
    value = fields.Integer()

    @api.model
    def _old_dated_rec(self):
        """define the condition of old dated records which could be as"""
        recent_rec = self.search([],order='date desc',limit=3)
        old_rec = self.search([('id','not in',recent_rec._ids)])
        old_rec.write({'old_dated': True})

然后您可以应用调度程序来每天运行此类方法

<field name="old_dated" invisible="1" />
<field name="date" attrs="{'readonly':[('the_boolen_field','=',True)]}"/>

通过这种方式,compute方法将更新布尔字段。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...