目的:
对所选记录进行批量操作
实现:
py文件
1.在待操作模型中加入函数:
@api.multi def button_version_mark(self): value = { # 'domain': domain, 'name': '版本标记', 'view_type': 'form', 'view_mode': 'form', 'res_model': 'version_mark', 'type': 'ir.actions.act_window', 'context':{ 'default_project': self.ids, 'default_version': self[0].version, 'default_upgrade_date': self[0].upgrade_date, }, 'target': 'new', } return value
2.增加临时模型
class version_mark(models.TransientModel): _name = 'version_mark' project = fields.Many2many('dtask.task', string=u'项目') version = fields.Char(u'版本号') upgrade_date = fields.Date(u'升级日期') @api.multi def action_affirm(self): version=self.version upgrade_date=self.upgrade_date for r in self: r.project.write({ 'version': version,'upgrade_date': upgrade_date})
xml文件
1.增加操作按钮:
<record model="ir.actions.server" id="action_version_mark"> <field name="name">版本标记</field> <field name="model_id" ref="模块名称.model_模型名称"/> <field name="code"> if records: action = records.button_version_mark() </field> </record> <record model="ir.values" id="action_version_mark"> <field name="model_id" ref="模块名称.model_模型名称"/> <field name="name">版本标记</field> <field name="key2">client_action_multi</field> <field name="value" eval="'ir.actions.server,' +str(ref('action_version_mark'))"/> <field name="key">action</field> <field name="model">dtask.task</field> </record>
2.增加临时模型的form视图记录:
<record id="dtask_version_mark_form" model="ir.ui.view"> <field name="name">版本标记</field> <field name="model">version_mark</field> <field name="arch" type="xml"> <form> <group> <sheet> <group> <field name="id" invisible="1"/> <field name="version"/> <field name="upgrade_date"/> </group> <footer> <button name="action_affirm" type="object" string="确认" class="oe_highlight"/> <button string="取消" class="oe_link" special="cancel"/> </footer> </sheet> </group> </form> </field> </record>