Web M2X Options Manager

web_m2x_options_manager
REPOSITORY
REPOSITORYOCA/web
GIT
GIThttps://github.com/OCA/web.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/web/tree/19.0/web_m2x_options_manager
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYWeb
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, AlexGarS73
WEBSITE
WEBSITEhttps://github.com/OCA/web
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_view_inheritance_extension
OCA/web:
    - web_m2x_options
odoo/odoo:
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows managing the "Create..." and "Create and Edit..." options for `Many2one`
and `Many2many` fields directly from the `ir.model` form view.

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
m2x_create_edit_option_form m2x.create.edit.option form view m2x.create.edit.option form New
m2x_create_edit_option_list_base m2x.create.edit.option list view - base m2x.create.edit.option list New
m2x_create_edit_option_list_editable m2x.create.edit.option list view - editable m2x.create.edit.option list Inherits web_m2x_options_manager.m2x_create_edit_option_list_base
m2x_create_edit_option_list_o2m_filter_by_comodel m2x.create.edit.option list view - filter by comodel m2x.create.edit.option field Inherits web_m2x_options_manager.m2x_create_edit_option_list_editable
m2x_create_edit_option_list_o2m_filter_by_model m2x.create.edit.option list view - filter by model m2x.create.edit.option field Inherits web_m2x_options_manager.m2x_create_edit_option_list_editable
m2x_create_edit_option_search m2x.create.edit.option search view m2x.create.edit.option search New
view_model_form_inherit view.model.form.inherit ir.model xpath Inherits base.view_model_form
Models touched (4)

New fields (3)
  • comodel_field_ids One2many → ir.model.fields
    args: 'ir.model.fields', 'comodel_id'
  • m2x_comodels_option_ids One2many → m2x.create.edit.option
    args: 'm2x.create.edit.option', 'comodel_id'
  • m2x_option_ids One2many → m2x.create.edit.option
    args: 'm2x.create.edit.option', 'model_id'
Public methods (4)
  • button_empty_m2x_comodels_options(self)
  • button_empty_m2x_options(self)
  • button_fill_m2x_comodels_options(self)
  • button_fill_m2x_options(self)

New fields (2)
  • can_have_options Boolean
    compute='_compute_can_have_options' store=True
  • comodel_id Many2one → ir.model
    compute='_compute_comodel_id' index=True store=True args: 'ir.model'
Public methods (1)
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (9)
  • comodel_id Many2one → ir.model
    related='field_id.comodel_id' store=True string='Comodel' args: 'ir.model'
  • comodel_name Char
    related='field_id.relation' store=True string='Comodel Name'
  • field_id Many2one → ir.model.fields
    domain=[('can_have_options', '=', True)] index=True ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_name Char
    related='field_id.name' store=True
  • model_id Many2one → ir.model
    related='field_id.model_id' store=True string='Model' args: 'ir.model'
  • model_name Char
    related='field_id.model' store=True
  • name Char
    compute='_compute_name' store=True
  • option_create Selection
    default='set_false' help="Defines behaviour for 'Create' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create' is always set to True/False, overriding any pre-existing option" required=True string='Create Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
  • option_create_edit Selection
    default='set_false' help="Defines behaviour for 'Create & Edit' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create & Edit' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create & Edit' is always set to True/False, overriding any pre-existing option" required=True string='Create & Edit Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • get(self, model_name, field_name)
    @api.model
    Returns specific record for ``field_name`` in ``model_name`` :param str model_name: technical model name (i.e. "sale.order") :param str field_name: technical field name (i.e. "partner_id") :return: a ``m2x.create.edit.option`` record :rtype: M2xCreateEditOption
  • unlink(self)
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/web
GIT
GIThttps://github.com/OCA/web.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/web/tree/18.0/web_m2x_options_manager
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYWeb
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, SilvioC2C, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/web
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_view_inheritance_extension
OCA/web:
    - web_m2x_options
odoo/odoo:
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows managing the "Create..." and "Create and Edit..." options for `Many2one`
and `Many2many` fields directly from the `ir.model` form view.

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
m2x_create_edit_option_form m2x.create.edit.option form view m2x.create.edit.option form New
m2x_create_edit_option_list_base m2x.create.edit.option list view - base m2x.create.edit.option list New
m2x_create_edit_option_list_editable m2x.create.edit.option list view - editable m2x.create.edit.option list Inherits web_m2x_options_manager.m2x_create_edit_option_list_base
m2x_create_edit_option_list_o2m_filter_by_comodel m2x.create.edit.option list view - filter by comodel m2x.create.edit.option field Inherits web_m2x_options_manager.m2x_create_edit_option_list_editable
m2x_create_edit_option_list_o2m_filter_by_model m2x.create.edit.option list view - filter by model m2x.create.edit.option field Inherits web_m2x_options_manager.m2x_create_edit_option_list_editable
m2x_create_edit_option_search m2x.create.edit.option search view m2x.create.edit.option search New
res_partner_demo_form_view res.partner.demo.form.view res.partner form New
view_model_form_inherit view.model.form.inherit ir.model xpath Inherits base.view_model_form
Models touched (4)

New fields (3)
  • comodel_field_ids One2many → ir.model.fields
    args: 'ir.model.fields', 'comodel_id'
  • m2x_comodels_option_ids One2many → m2x.create.edit.option
    args: 'm2x.create.edit.option', 'comodel_id'
  • m2x_option_ids One2many → m2x.create.edit.option
    args: 'm2x.create.edit.option', 'model_id'
Public methods (4)
  • button_empty_m2x_comodels_options(self)
  • button_empty_m2x_options(self)
  • button_fill_m2x_comodels_options(self)
  • button_fill_m2x_options(self)

New fields (2)
  • can_have_options Boolean
    compute='_compute_can_have_options' store=True
  • comodel_id Many2one → ir.model
    compute='_compute_comodel_id' index=True store=True args: 'ir.model'
Public methods (1)
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (9)
  • comodel_id Many2one → ir.model
    related='field_id.comodel_id' store=True string='Comodel' args: 'ir.model'
  • comodel_name Char
    related='field_id.relation' store=True string='Comodel Name'
  • field_id Many2one → ir.model.fields
    domain=[('can_have_options', '=', True)] index=True ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_name Char
    related='field_id.name' store=True
  • model_id Many2one → ir.model
    related='field_id.model_id' store=True string='Model' args: 'ir.model'
  • model_name Char
    related='field_id.model' store=True
  • name Char
    compute='_compute_name' store=True
  • option_create Selection
    default='set_false' help="Defines behaviour for 'Create' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create' is always set to True/False, overriding any pre-existing option" required=True string='Create Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
  • option_create_edit Selection
    default='set_false' help="Defines behaviour for 'Create & Edit' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create & Edit' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create & Edit' is always set to True/False, overriding any pre-existing option" required=True string='Create & Edit Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • get(self, model_name, field_name)
    @api.model
    Returns specific record for ``field_name`` in ``model_name`` :param str model_name: technical model name (i.e. "sale.order") :param str field_name: technical field name (i.e. "partner_id") :return: a ``m2x.create.edit.option`` record :rtype: M2xCreateEditOption
  • unlink(self)
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/web
GIT
GIThttps://github.com/OCA/web.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/web/tree/17.0/web_m2x_options_manager
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYWeb
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSOCA-git-bot, SilvioC2C, oca-ci, Vincent Van Rossem
WEBSITE
WEBSITEhttps://github.com/OCA/web
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_view_inheritance_extension
OCA/web:
    - web_m2x_options
odoo/odoo:
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows managing the "Create..." and "Create and Edit..." options for `Many2one`
and `Many2many` fields directly from the `ir.model` form view.

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
m2x_create_edit_option_form m2x.create.edit.option form view m2x.create.edit.option form New
m2x_create_edit_option_search m2x.create.edit.option search view m2x.create.edit.option search New
m2x_create_edit_option_tree_base m2x.create.edit.option tree view - base m2x.create.edit.option tree New
m2x_create_edit_option_tree_editable m2x.create.edit.option tree view - editable m2x.create.edit.option tree Inherits web_m2x_options_manager.m2x_create_edit_option_tree_base
m2x_create_edit_option_tree_o2m_filter_by_comodel m2x.create.edit.option tree view - filter by comodel m2x.create.edit.option field Inherits web_m2x_options_manager.m2x_create_edit_option_tree_editable
m2x_create_edit_option_tree_o2m_filter_by_model m2x.create.edit.option tree view - filter by model m2x.create.edit.option field Inherits web_m2x_options_manager.m2x_create_edit_option_tree_editable
res_partner_demo_form_view res.partner.demo.form.view res.partner form New
view_model_form_inherit view.model.form.inherit ir.model xpath Inherits base.view_model_form
Models touched (4)

New fields (3)
  • comodel_field_ids One2many → ir.model.fields
    args: 'ir.model.fields', 'comodel_id'
  • m2x_comodels_option_ids One2many → m2x.create.edit.option
    args: 'm2x.create.edit.option', 'comodel_id'
  • m2x_option_ids One2many → m2x.create.edit.option
    args: 'm2x.create.edit.option', 'model_id'
Public methods (4)
  • button_empty_m2x_comodels_options(self)
  • button_empty_m2x_options(self)
  • button_fill_m2x_comodels_options(self)
  • button_fill_m2x_options(self)

New fields (2)
  • can_have_options Boolean
    compute='_compute_can_have_options' store=True
  • comodel_id Many2one → ir.model
    compute='_compute_comodel_id' index=True store=True args: 'ir.model'
Public methods (1)
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (9)
  • comodel_id Many2one → ir.model
    related='field_id.comodel_id' store=True string='Comodel' args: 'ir.model'
  • comodel_name Char
    related='field_id.relation' store=True string='Comodel Name'
  • field_id Many2one → ir.model.fields
    domain=[('can_have_options', '=', True)] index=True ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_name Char
    related='field_id.name' store=True
  • model_id Many2one → ir.model
    related='field_id.model_id' store=True string='Model' args: 'ir.model'
  • model_name Char
    related='field_id.model' store=True
  • name Char
    compute='_compute_name' store=True
  • option_create Selection
    default='set_false' help="Defines behaviour for 'Create' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create' is always set to True/False, overriding any pre-existing option" required=True string='Create Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
  • option_create_edit Selection
    default='set_false' help="Defines behaviour for 'Create & Edit' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create & Edit' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create & Edit' is always set to True/False, overriding any pre-existing option" required=True string='Create & Edit Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • get(self, model_name, field_name)
    @api.model
    Returns specific record for ``field_name`` in ``model_name`` :param str model_name: technical model name (i.e. "sale.order") :param str field_name: technical field name (i.e. "partner_id") :return: a ``m2x.create.edit.option`` record :rtype: M2xCreateEditOption
  • unlink(self)
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/web
GIT
GIThttps://github.com/OCA/web.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/web/tree/16.0/web_m2x_options_manager
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYWeb
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSWeblate, oca-ci, Quoc Duong
WEBSITE
WEBSITEhttps://github.com/OCA/web
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_m2x_options
odoo/odoo:
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
res_partner_demo_form_view res.partner.demo.form.view res.partner form New
view_model_form_inherit view.model.form.inherit ir.model xpath Inherits base.view_model_form
Models touched (4)

New fields (1)
  • m2x_create_edit_option_ids One2many → m2x.create.edit.option
    args: 'm2x.create.edit.option', 'model_id'
Public methods (2)
  • button_empty(self)
  • button_fill(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • field_id Many2one → ir.model.fields
    domain=[('ttype', 'in', ('many2many', 'many2one'))] ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_name Char
    related='field_id.name' store=True
  • model_id Many2one → ir.model
    ondelete='cascade' required=True string='Model' args: 'ir.model'
  • model_name Char
    compute='_compute_model_name' inverse='_inverse_model_name' store=True
  • option_create Selection
    default='set_false' help="Defines behaviour for 'Create' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create' is always set to True/False, overriding any pre-existing option" required=True string='Create Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
  • option_create_edit Selection
    default='set_false' help="Defines behaviour for 'Create & Edit' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create & Edit' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create & Edit' is always set to True/False, overriding any pre-existing option" required=True string='Create & Edit Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
  • option_create_edit_wizard Boolean
    default=True help="Defines behaviour for 'Create & Edit' Wizard\nSet to False to prevent 'Create & Edit' Wizard to pop up" string='Create & Edit Wizard'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • get(self, model_name, field_name)
    @api.model
    Returns specific record for ``field_name`` in ``model_name`` :param str model_name: technical model name (i.e. "sale.order") :param str field_name: technical field name (i.e. "partner_id")
  • unlink(self)
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/web
GIT
GIThttps://github.com/OCA/web.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/web/tree/15.0/web_m2x_options_manager
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYWeb
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Germana
WEBSITE
WEBSITEhttps://github.com/OCA/web
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_m2x_options
odoo/odoo:
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
res_partner_demo_form_view res.partner.demo.form.view res.partner form New
view_model_form_inherit view.model.form.inherit ir.model xpath Inherits base.view_model_form
Models touched (4)

New fields (1)
  • m2x_create_edit_option_ids One2many → m2x.create.edit.option
    args: 'm2x.create.edit.option', 'model_id'
Public methods (2)
  • button_empty(self)
  • button_fill(self)

New fields (0)

No new fields.

Public methods (1)
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • field_id Many2one → ir.model.fields
    domain=[('ttype', 'in', ('many2many', 'many2one'))] ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_name Char
    related='field_id.name' store=True string='Field Name'
  • model_id Many2one → ir.model
    ondelete='cascade' required=True string='Model' args: 'ir.model'
  • model_name Char
    compute='_compute_model_name' inverse='_inverse_model_name' store=True
  • option_create Selection
    default='set_false' help="Defines behaviour for 'Create' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create' is always set to True/False, overriding any pre-existing option" required=True string='Create Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
  • option_create_edit Selection
    default='set_false' help="Defines behaviour for 'Create & Edit' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create & Edit' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create & Edit' is always set to True/False, overriding any pre-existing option" required=True string='Create & Edit Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
  • option_create_edit_wizard Boolean
    default=True help="Defines behaviour for 'Create & Edit' Wizard\nSet to False to prevent 'Create & Edit' Wizard to pop up" string='Create & Edit Wizard'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • get(self, model_name, field_name)
    @api.model
    Returns specific record for ``field_name`` in ``model_name`` :param str model_name: technical model name (i.e. "sale.order") :param str field_name: technical field name (i.e. "partner_id")
  • unlink(self)
  • write(self, vals)
REPOSITORY
REPOSITORYOCA/web
GIT
GIThttps://github.com/OCA/web.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/web/tree/14.0/web_m2x_options_manager
VERSION
VERSION 1.4.0
CATEGORY
CATEGORYWeb
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSoca-travis, Weblate, OCA-git-bot, SilvioC2C, oca-ci, Maksym Yankin, Alessandro Uffreduzzi, daniel-chionne
WEBSITE
WEBSITEhttps://github.com/OCA/web
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_m2x_options
odoo/odoo:
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
res_partner_demo_form_view res.partner.demo.form.view res.partner form New
view_model_form_inherit view.model.form.inherit ir.model xpath Inherits base.view_model_form
Models touched (4)

New fields (1)
  • m2x_create_edit_option_ids One2many → m2x.create.edit.option
    args: 'm2x.create.edit.option', 'model_id'
Public methods (2)
  • button_empty(self)
  • button_fill(self)

New fields (0)

No new fields.

Public methods (1)
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • postprocess(self, node, current_node_path, editable, name_manager)

New fields (7)
  • field_id Many2one → ir.model.fields
    domain=[('ttype', 'in', ('many2many', 'many2one'))] ondelete='cascade' required=True string='Field' args: 'ir.model.fields'
  • field_name Char
    related='field_id.name' store=True string='Field Name'
  • model_id Many2one → ir.model
    ondelete='cascade' required=True string='Model' args: 'ir.model'
  • model_name Char
    compute='_compute_model_name' inverse='_inverse_model_name' store=True string='Model Name'
  • option_create Selection
    default='set_false' help="Defines behaviour for 'Create' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create' is always set to True/False, overriding any pre-existing option" required=True string='Create Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
  • option_create_edit Selection
    default='set_false' help="Defines behaviour for 'Create & Edit' option:\n* Do nothing: nothing is done\n* Add/Remove: option 'Create & Edit' is set to True/False only if not already present in view definition\n* Force Add/Remove: option 'Create & Edit' is always set to True/False, overriding any pre-existing option" required=True string='Create & Edit Option' args: [('none', 'Do nothing'), ('set_true', 'Add'), ('force_true', 'Force Add'), ('set_false', 'Remove'), ('force_false', 'Force Remove')]
  • option_create_edit_wizard Boolean
    default=True help="Defines behaviour for 'Create & Edit' Wizard\nSet to False to prevent 'Create & Edit' Wizard to pop up" string='Create & Edit Wizard'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • get(self, model_name, field_name)
    @api.model
    Returns specific record for ``field_name`` in ``model_name`` :param str model_name: technical model name (i.e. "sale.order") :param str field_name: technical field name (i.e. "partner_id")
  • unlink(self)
  • write(self, vals)