Odoo----Compute Field计算字段

什么叫Compute Field?直接翻译过来就是计算字段,也就是说它的结果依赖于其他数据的计算结果或判断结果。

我们今天在这里讲解的就是这种类型的字段如何在Odoo实现。病人有年龄之分,我们让系统根据年龄进行分组显示。

首先,我们要建立一个年龄分组的计算字段age_group,分别在patient.py实现计算功能,在patient_menu.xml的Form View和Tree View里面添加这个年龄分组的计算字段用于编辑和显示

patient.py: 要点在compute=‘set_age_group’,注册进来的是函数名

age_group = fields.Selection([
        ('adult','成年'),
        ('minor','未成年'),
    ], default='male', string='Age Group', compute='set_age_group');  # 新增年龄段
    def set_age_group(self):
        for rec in self:
            if rec.patient_age:
                if rec.patient_age < 18:
                    rec.age_group = 'minor'
                else:
                    rec.age_group = 'adult'

接下来的Form,Tree视图就没什么特别的了,直接追加这个字段就行

    <!-- Patient Form -->
    <record id="patient_form" model="ir.ui.view">
        <field name="name">hospital.patient.form</field>
        <field name="model">hospital.patient</field>
        <field name="arch" type="xml">
            <form string="Patients">
                <sheet>
                    <div class="oe_title">
                        <h1>
                            <field name="name_seq" readonly="1"/>
                        </h1>
                    </div>
                    <group>
                        <group>
                            <field name="patient_name"/>
                            <field name="patient_disp_name"/>
                        </group>
                        <group>
                            <field name="patient_age"/>
                            <field name="age_group"/>
                            <field name="gender"/>
                        </group>
                        <group>
                            <field name="notes"/>
                            <field name="image"/>
                        </group>
                    </group>
                </sheet>
                <div class="oe_chatter">
                    <field name="message_follower_ids" widget="mail_followers"/>
                    <field name="activity_ids" widget="mail_activity"/>
                    <field name="message_ids" widget="mail_thread" options="{'post_refresh':'recipients'}"/>
                </div>
            </form>
        </field>
    </record>
    <!-- Patient Tree -->
    <record id="patient_tree" model="ir.ui.view">
        <field name="name">hospital.patient.tree</field>
        <field name="model">hospital.patient</field>
        <field name="arch" type="xml">
            <tree string="Patients">
                <field name="name_seq"/>
                <field name="patient_name"/>
                <field name="patient_disp_name"/>
                <field name="gender"/>
                <field name="patient_age"/>
                <field name="age_group"/>
                <field name="notes"/>
                <field name="image"/>
            </tree>
        </field>
    </record>

升级om_hospital后,我们添加一条病人记录:
在这里插入图片描述
在这里插入图片描述
保存后,年龄分组(Age Group)自动定位为未成年(我们在代码中定义的是小于18岁)

然后看一下列表页
在这里插入图片描述
转载自:https://blog.csdn.net/xmsea/article/details/105912369

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值