odoo新手创建模块(六)--计算字段/隐藏tree视图值

一.计算字段(compute)

字段中可使用根据函数自动计算所得的类型,计算字段的声明方式与常规字段是一样的,只是使用了compute参数,参数被赋值为一个函数的名称,如果看不懂,就直接看源码吧:

我们的猫猫管理系统目前在新建数据时,会出现最后被收养时间最后归还时间无值的情况.
无值
只有当我们保存后,再进行编辑时,才会触发修改事件,如果我们想在新建的时候,就默认归还/收养时间为当前时间,就该使用compute

找到My_Cats_HomePage.py文件,增加计算字段:

#compute:计算字段,参数是定义的方法
#store=True:计算字段是默认不将数据保存在数据库中的,要想保存,就要使用此字段
date_last_borrowed = fields.Datetime("最后被收养时间", index=True, readonly=True,compute="_compute_date",store=True)
date_last_return = fields.Datetime("最后归还时间", index=True, readonly=True,compute="_compute_date",store=True)

@api.depends('borrowed')
	#计算字段需要修饰器@api.depends
	#参数为字段,即当该字段值发生改变时,调用此方法
	#与上面字段添加的compute参数一致
    def _compute_date(self):
        """
        在创建时,自动将最后被收养时间/最后归还时间进行处理
        """
        if self.borrowed :
        	#如果创建时勾选已收养,则最后被收养时间为当前时间
            self.date_last_borrowed = fields.Datetime.now()
        else:
        	#如果创建时未勾选已收养,则最后归还时间为当前时间
            self.date_last_return = fields.Datetime.now()

当我们新建时,系统会为我们自动填好最后归还时间:
在这里插入图片描述
当我们改变是否被收养单选框时,最后被收养时间也会随之改变:
在这里插入图片描述

二.隐藏tree视图值

在点击tree视图时,我们发现最后被收养时间最后归还时间同时存在,其实我们只需要显示一个就好,在是否被收养字段为true时,只显示最后被收养时间,当是否被收养字段为false时,只显示最后归还时间.
在这里插入图片描述这里有两种办法:
一.数据库限制:
找到My_Cats_HomePage.py文件,修改计算方法(_compute_date):

@api.depends('borrowed')
 def _compute_date(self):
     """
     在创建时,便自动将最后被收养时间/最后归还时间进行处理
     """
     if self.borrowed :
         self.date_last_borrowed = fields.Datetime.now()
         self.date_last_return=None#当被收养时将最后归还时间值为空
     else:
         self.date_last_return = fields.Datetime.now()
         self.date_last_borrowed = None#当归还时将最后被收养时间
         #注:在修改此方法后,原有数据并不会收到影响
         #只有调用了此方法,才会生效

这样,在我们重新创建数据或调用_compute_date方法时,相应的字段值便会自动值空.
在这里插入图片描述

二.前端页面限制
我们既需要保留最后被收养时间最后归还时间两个字段的值,又不希望tree视图两个值都有数据显示,就只能修改xml了.

views文件夹下,打开My_Cats_HomePage_view.xml文件,修改tree视图:

<tree>
     <field name="code"/>
     <field name="name"/>
     <field name="age"/>
     <field name="cat_type"/>
     <field name="price"/>

     <field name="borrowed"/>
     <!--添加attrs属性,当未被收养时隐藏最后被收养时间-->
     <field name="date_last_borrowed" attrs="{'invisible':[('borrowed','=',False)]}"/>
     <!--添加attrs属性,当已被收养时隐藏最后归还时间-->
     <field name="date_last_return" attrs="{'invisible':[('borrowed','=',True)]}"/>
     <field name="doing_date"/>
     <field name="description"/>
 </tree>

attrs基本属性:

  • readonly只读
  • required必填
  • invisible隐藏
    attrs根据条件动态设置字段属性,attrs=’{‘invisible’: [(‘is_ill’, ‘=’, True)], ‘required’: [(‘is_ill’, ‘=’, False)]}’

详情请移步Leo-Bian老师的整理资料< ODOO开发教程之基本字段属性>

在这里插入图片描述
与之前的数据库限制效果一致,不同的是,数据库所存储的值并不会值空,在pg库里,用sql语句查询时,数据依旧存在,他只是在前端页面被隐藏了而已:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值