1. 程式人生 > 其它 >odoo12 一些基本API

odoo12 一些基本API

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>