标准的Odoo表单界面下面都提供有聊天,登记日志,安排下一期工作和添加附件的功能,这个功能英文叫Chatter,还真不好翻译,直接翻译过来叫“喋喋不休”,讲直接点就是话痨。
首先,我们要改造一下patient.py,就添加了_inherit这一行。不过mixin类是一个Odoo用于多重继承扩展的类型,非常有用,很好的诠释了编码的DRY(Don’t Repeat Yourself)原则。mixin类我们后面再详细谈,这一片主要说喋喋不休哈
class HospitalPatient(models.Model):
_name = 'hospital.patient'
_inherit = ['mail.thread','mail.activity.mixin']
_description = 'Patient Record'
_rec_name = 'patient_disp_name'
patient_name = fields.Char(string='Name', required=True); # 必填字段
patient_age = fields.Integer(string='Age');
notes = fields.Text(string='Notes');
image = fields.Binary(string='Image');
patient_disp_name = fields.Char(string='Patient Display Name'); # patient在标题栏的显示信息
然后我们要给patient_menu.xml追加内容,请注意</sheet>下面的<div></div>那一段,可读性非常强,我就不再描述了
<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>
<group>
<group>
<field name="patient_name"/>
<field name="patient_disp_name"/>
</group>
<group>
<field name="patient_age"/>
</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>
别忘了在__manifest__.py里面添加依赖,因为我们用到了mail模块
'depends' : ['base','mail'],
下面直接Upgrade模块,看效果: