標準的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模塊,看效果: