【问题标题】:How to dynamic change the domain of a Many2one field in ODOO如何在 ODOO 中动态更改 Many2one 字段的域
【发布时间】:2019-01-10 10:53:34
【问题描述】:

我想每次dul的值变化时动态改变many2one字段的域#dul是布尔值

在第一种情况下,domain="[('parent_id', '!=', False), ('parent_id', '=', imeReona)]", 在另一种情况下domain="[('parent_id', '!=', False)]"

我试过了:

my_many2one_field = fields.Many2one(..., domain=lambda self: self.env['ir.config_parameter'].sudo().get_param('domen_mm2o'))

@api.onchange('dul') def _onchange_dul(self): if (self.dul == True): res = "[('parent_id','!=',False),('parent_id','=',imeReona)]" else: res = "[('parent_id','!=',False)]" self.env['ir.config_parameter'].sudo().set_param('domen_mm2o',res)

如果我不够清楚或没有很好地提出问题,请告诉我

【问题讨论】:

  • 问题不清楚
  • @Navi 如果还不够清楚,请告诉我

标签: python odoo odoo-10 many-to-one


【解决方案1】:
@api.onchange('partner_id')
def apply_domain_customer(self):
    vehicles = self.env['fleet.vehicle'].search([('driver_id', '=', 
      self.partner_id.id)]).ids
    return {
        'domain': {
            'vehicle': [('id', 'in', vehicles)]
        }}

【讨论】:

  • 我认为动态域可以像这段代码一样完成你的工作
  • 非常感谢@Akshay,您的回答帮助我修复了我的代码
【解决方案2】:

我修复了代码。 从my_many2one_field 我删除了, domain=lambda self: self.env['ir.config_parameter'].sudo().get_param('domen_mm2o')

并更新

@api.onchange('dul')
def _onchange_dul(self):
    if (self.dul == True):
        res = "[('parent_id','!=',False),('parent_id','=',imeReona)]"
    else:
        res = "[('parent_id','!=',False)]"
    self.env['ir.config_parameter'].sudo().set_param('domen_mm2o',res)

添加以下代码

    return{
        'domain': {'my_many2one_field': self.env['ir.config_parameter'].sudo().get_param('domen_mm2o')}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多