odoo12 一些基本API
阿新 • • 發佈:2021-08-05
class EpidemicRecord(models.Model): _name = 'epidemic.record' # 表名 name = fields.Char(string='姓名') # string是用於前端顯示的名字 date = fields.Date(string='確診日期') state = fields.Char(string='省') city = fields.Char(string='市') county = fields.Char(string='區/街道') street = fields.Char(string='具體地址') ill_type = fields.Char(string='感染方式') within_or_abroad = fields.Selection([('within', '境內'), ('abroad', '境外')], string='境內/境外感染') # 列舉型別 is_ill = fields.Boolean(string='是否確診', default=False) begin_lsolation_date = fields.Date(string='起始隔離時間') lsolation_mode = fields.Selection([('home', '居家隔離'), ('focus', '集中隔離')], string='隔離方式') create_user_id = fields.Many2one('res.users', string='填報人', default=lambda self: self.env.uid) # 外來鍵關聯,default是預設內容,這個函式的意思是預設值為當前登入使用者 fuzhu_create_user_id = fields.Many2many('res.users', 'epidemic_2_user', column1='epidemic_id', column2='user_id', string='輔助填報人') note = fields.Text(string='說明') @api.model def create(self, vals_list): """新建的時候會呼叫""" res = super(EpidemicRecord, self).create(vals_list) return res @api.onchange('name', 'state', 'is_ill', 'within_or_abroad') def onchange_note(self): """ 用於監聽前端資料的改動,實時返回內容。類似於前端js的change操作 函式名可以自定義 @api.onchange('name', 'state', 'is_ill', 'within_or_abroad') 這裡面寫的就是需要監聽的欄位 self.note 這個是就是要根據內容改變而變動的欄位 """ self.note = f'{self.state}省的{self.name}{"確診" if self.is_ill else "隔離"}' @api.multi def unlink(self): """刪除的時候會呼叫""" res = super(EpidemicRecord, self).unlink() return res @api.multi def myserch(self): """自定義按鈕""" domain = [ ('is_ill', '=', True) ] res = self.search(domain) print(res)
自定義按鈕
<!-- form檢視--> <record id="repidemic_record_form_view" model="ir.ui.view"> <field name="name">疫情記錄</field> <field name="model">epidemic.record</field> <field name="arch" type="xml"> <form> <sheet> <header> <!-- 自定義按鈕 string 是按鈕上顯示的文字 type object固定 name 點選按鈕之後需要呼叫的自定義方法 --> <button string="測試" type="object" name="myserch"/> </header> <group> <group> <field name="name"/> <field name="is_ill" required="1"/> <field name="date" attrs="{'invisible':[('is_ill','=',False)],'required':[('is_ill','=',True)]}"/> <field name="ill_type" attrs="{'invisible':[('is_ill','=',False)],'required':[('is_ill','=',True)]}"/> <field name="within_or_abroad" attrs="{'invisible':[('is_ill','=',False)],'required':[('is_ill','=',True)]}"/> <field name="begin_lsolation_date" attrs="{'invisible':[('is_ill','=',True)],'required':[('is_ill','=',False)]}"/> <field name="lsolation_mode" attrs="{'invisible':[('is_ill','=',True)],'required':[('is_ill','=',False)]}"/> </group> <group> <field name="state"/> <field name="city"/> <field name="county"/> <field name="street"/> <field name="create_user_id" readonly="1"/> <field name="fuzhu_create_user_id" widget="many2many_tags" options="{'no_create':True,'no_edit':True}"/> </group> </group> <notebook> <page string="說明"> <field name="note"/> </page> </notebook> </sheet> </form> </field> </record>