Odoo 如何在没有onchange触发器的情况下为多个字段设置动态域?

Odoo 如何在没有onchange触发器的情况下为多个字段设置动态域?,odoo,Odoo,我有一个单元课 类别CRM项目(models.Model): _name='crm.projects' product\u lines=fields.many2min('crm.project.product.lines')) 和另一个模块中的类 class CoRG(models.Model): _继承='crm.lead' project=fields.manyOne(comodel_name=“crm.projects”) product\u line=fields.manyOne('c

我有一个单元课

类别CRM项目(models.Model):
_name='crm.projects'
product\u lines=fields.many2min('crm.project.product.lines'))
和另一个模块中的类

class CoRG(models.Model):
_继承='crm.lead'
project=fields.manyOne(comodel_name=“crm.projects”)
product\u line=fields.manyOne('crm.project.product.line'))
第一个模块有一个按钮,可从第二个模块打开新表单,并可轻松设置由
onchange

domain={'product_-lines':[('id','in',self.project.product_-lines.ids)]
问题是,如果我转到从该表单创建的记录屏幕并编辑项目行,域将无法工作 我试着用

domain:lambda self:[('id','in',self.project.product\u lines.ids)]
在第二个模块的领域,但这不起作用,有什么建议吗?

Abdulrahman

您可以像这样在
manyOne
字段上设置默认域,无需触发
onchange

@api.model
def _default_tax_group(self):
    return self.env['account.tax.group'].search([], limit=1)
tax_group_id = fields.Many2one('account.tax.group', string="Tax Group", default=_default_tax_group, required=True)

谢谢

您不需要设置域,因为字段是相关的

更改如下:

class CoRG(models.Model):
    _inherit = 'crm.lead'

     project = fields.Many2one(comodel_name="crm.projects")
     product_lines = fields.Many2one(related='project.product_lines')

使用以下实现解决了该问题

test1=fields.Many2many('crm.project.product.line',related='project.product\u line'))
product_lines=fields.manyOne('crm.project.product.lines',domain=“[('id','in',test1)])

感谢您的建议。

在搜索过程中,您仍然需要添加可以过滤所需记录的域。