odoo14智能按钮实现

在 Odoo 14 中,智能按钮通常使用 ir.actions.server 或按钮的形式实现。以下是创建智能按钮的一般步骤

数据:

odoo14智能按钮实现_第1张图片

odoo14智能按钮实现_第2张图片

效果:

odoo14智能按钮实现_第3张图片


点击这个数量时,只展示该医生的病人数据

odoo14智能按钮实现_第4张图片

说明:

这里有两种方式:1、button的object方式。1、button的action方式
医生模型:

class DoctorsDataModel(models.Model):
    _name = 'doctors.data.model'
    _description = '医生信息'

    _sql_constraints = [
        ('name_uniq', 'unique (name)', '名称不能重复')
    ]

    name = fields.Char(string='姓名')
    sex = fields.Selection([('man', '男'), ('female', '女')], string='性别')
    position = fields.Selection([('common', '普通医生'), ('director', '主任'), ('professor', '教授'), ('faculty', '院系')], string='身份')
    education = fields.Selection([('junior', '专科'), ('regular', '本科'), ('graduate', '研究生'), ('doctorate', '博士')], string='学历')
    patients_nums = fields.Integer(string='病人数量', compute='_compute_patients_num')

    def _compute_patients_num(self):
        for record in self:
            patient_numbers = self.env['patients.data.model'].search_count([('doctor_id', '=', record.id)])
            record.patients_nums = patient_numbers

    def return_patients_page(self):
        """
            返回指定的窗口数据
        """
        action = {
            'name': '病人信息',
            'type': 'ir.actions.act_window',
            'view_mode': 'tree,form', # 这个不要写反 如果写成 form,tree 返回的是创建表单
            'res_model': 'patients.data.model', # 要返回的那个数据的对应模型
            'domain': [('doctor_id', '=', self.id)], # 过滤,这里是过滤病人的医生是当前医生
            'target': 'current' # 覆盖当前窗口 'new' 是新的窗口
        }
        return action

病人模型:

class Patient(models.Model):
    _name = 'patients.data.model'
    _description = '病人信息'

    _sql_constraints = [
        ('name_uniq', 'unique (name)', '名称不能重复')
    ]

    name = fields.Char(string='姓名')
    sex = fields.Selection([('man', '男'), ('female', '女')], string='性别')
    doctor_id = fields.Many2one('doctors.data.model', string='主治医师')


XML:

医生:

odoo14智能按钮实现_第5张图片

你可能感兴趣的:(python,开发语言,后端,xml)