按另一个选择过滤选择

Selection Filtering By Another Selection

我正在寻找一种方法来过滤后续选择,具体取决于其中哪些已被填充。 我想要一个树状结构来设置位置:

=>国家

==>州

===>区

也就是说你先进区,其他两个只有一个选择。 假设您先进入该国,您对后两者的选择会更有限。

我知道我应该使用 many2one 字段,但此时我所能做的就是多选 visible/invisible,这是非常低效的。

我是 Odoo 的新手,发现文档有些欠缺。如有任何帮助,我们将不胜感激!

我会使用运算符 =?

来处理 many2one 字段和域

例如:


class MyModel(models.Model):
    _name = "my.model"

    country_id = fields.Many2one(comodel_name="res.country")
    state_id = fields.Many2one(comodel_name="res.country.state")
    disctrict_id = fields.Many2one(comodel_name="res.country.state.district")

我不知道型号名称是否正确,但你应该已经知道了。

并在视图中使用具有上述运算符的域:

<field name="country_id"
    domain="[('state_ids', '=?', state_id),('state_ids.district_ids', '=?', district_id)]" />
<field name="state_id"
    domain="[('country_id', '=?', country_id),('district_ids', '=?', district_id)]" />
<field name="disctrict_id"
    domain="[('state_id', '=?', state_id),('state_ids.country_id', '=?', country_id)]" />

我没有对这些 AND conditions/domains 进行任何测试。而且我不知道这三个模型的结构。我的假设是,在 res.country -> res.country.stateres.country.state -> res.country.state.district.[=20 上存在 one2manymany2many 关系=]