Skip to main content

Use computed field as domain

Project description

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runboat

This technical addon allows developers to specify a field domain in a view using the value of another field in that view, rather than as a static XML attribute.

Table of contents

Usage

When you define a view you can specify on the relational fields a domain attribute. This attribute is evaluated as filter to apply when displaying existing records for selection.

<field name="product_id" domain="[('type','=','product')]"/>

The value provided for the domain attribute must be a string representing a valid Odoo domain. This string is evaluated on the client side in a restricted context where we can reference as right operand the values of fields present into the form and a limited set of functions.

In this context it’s hard to build complex domain and we are facing to some limitations as:

  • The syntax to include in your domain a criteria involving values from a x2many field is complex.

  • The right side of domain in case of x2many can involve huge amount of ids (performance problem).

  • Domains computed by an onchange on an other field are not recomputed when you modify the form and don’t modify the field triggering the onchange.

  • It’s not possible to extend an existing domain. You must completely redefine the domain in your specialized addon

  • etc…

In order to mitigate these limitations this new addon allows you to use the value of a field as domain of an other field in the xml definition of your view.

<field name="product_id_domain" invisible="1"/>
<field name="product_id" domain="product_id_domain"/>

The field used as domain must provide the domain as a JSON encoded string.

product_id_domain = fields.Char(
    compute="_compute_product_id_domain",
    readonly=True,
    store=False,
)

@api.depends('name')
def _compute_product_id_domain(self):
    for rec in self:
        rec.product_id_domain = json.dumps(
            [('type', '=', 'product'), ('name', 'like', rec.name)]
        )

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.

Do not contact contributors directly about support or help with technical issues.

Credits

Authors

  • ACSONE SA/NV

Contributors

Maintainers

This module is maintained by the OCA.

Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

This module is part of the OCA/web project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

File details

Details for the file odoo_addon_web_domain_field-16.0.1.0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for odoo_addon_web_domain_field-16.0.1.0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3dae56d97366c38996e541c87ed94ed1b40a862439bba7eb6838d81333e043ad
MD5 8675cc8c201ad8c9e6df3642bd8c3d2e
BLAKE2b-256 b3625643ff57ab74efaf6068cc459e62a5af90982fc2d2d36662bf6bf7a5106d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page