变更事件

“变更事件”机制为客户端交互提供了一种灵活的方式,当用户在输入框中输入一个值就可以立即修改表单内容,而不必更新到数据库。

例如,假设一个实体有三个字段: amountunit_priceprice ,你希望当修改了其他两个字段内容的时候,能够自动更新 price 字段的值。为了达到这个目的,定义一个方法,使用 self 作为参数获取当前表单的数据记录,并添加onchange() 装饰器,确定当哪些字段变更时触发该方法。针对 self 数据记录所做的任何修改都将反应到当前的表单视图。

<!-- content of form view -->
<field name="amount" />
<field name="unit_price" />
<field name="price" readonly="1" />
# onchange handler
@api.onchange('amount','unit_price')
def _onchange_price(self):
    # set auto-changing field
    self.price = self.amount * self.unit_price
    # Can optionally return a warning and domains
    return{
        'warning':{
            'title':"Something bad happened",
            'message':"It was very bad indeed"
        }
    }

对于计算字段,onchange 的行为是内置的,这一点可以通过 “Session“ 的 form 视图加以验证:改变座位数或者参加人数,taken_seats 字段的进度条将自动更新。

变更事件练习:6-1

警告:对于不合法的值(负的座位数,或者大于座位数的参加人数),可以添加变更事件处理方法以提供警告信息。

openacademy/models.py

results matching ""

    No results matching ""