Package: odoo-addon-web-domain-field
WarningThis module is deprecated.
If you want to use this functionality you can assign a unserialised
domain to a fields.Binary,exampleThis 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 contentsUsageBug TrackerCreditsAuthorsContributorsMaintainersUsageWhen 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.<fieldname="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 addonetc…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.<fieldname="product_id_domain"invisible="1"/><fieldname="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):forrecinself:rec.product_id_domain=json.dumps([('type','=','product'),('name','like',rec.name)])NoteYou do not actually need this module to craft a dynamic domain. Odoo comes
with its ownpy.jsweb library to parse expressions such as domains.py.jssupports more
complex expressions than just static lists.Here is an example of a conditional domain based on the value of another
field:(order_idorpartner_id)and[('id','in',allowed_picking_ids)]or[('state','=','done'),('picking_type_id.code','=','outgoing')]For OCA modules, this method is preferred over adding this module as an
additional dependency.Bug TrackerBugs are tracked onGitHub 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 welcomedfeedback.Do not contact contributors directly about support or help with technical issues.CreditsAuthorsACSONE SA/NVContributorsLaurent Mignon <laurent.mignon@acsone.eu>Denis Roussel <denis.roussel@acsone.eu>Raf Ven <raf.ven@dynapps.be>MaintainersThis module is maintained by the OCA.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 theOCA/webproject on GitHub.You are welcome to contribute. To learn how please visithttps://odoo-community.org/page/Contribute.