gpt4 book ai didi

python - Odoo:如何将动态域设置为many2many字段

转载 作者:太空宇宙 更新时间:2023-11-03 19:52:32 25 4
gpt4 key购买 nike

我想根据many2one字段onchange函数更改many2many字段检索到的值集,它与另一个many2one字段配合得很好,但似乎没有过滤many2many字段上的结果我的代码如下

class CustomPurchase(models.Model):
_name = 'custom.purchase'
_description = 'Purchase Record'

supplier_id = fields.Many2one('custom.supplier', string='Supplier', required=True)
product_ids = fields.Many2many('custom.supply.line', string='Purchase Lines', required=True)

@api.onchange('supplier_id')
def onchange_supplier(self):
selected_lines = []
if self.supplier_id:
for rec in self:
selected_lines = rec.env['custom.supply.line'].search([('supplier_id', '=', rec.supplier_id.id)])
domain = {'product_ids': [('id', '=', selected_lines.id)]}
return {'domain': domain, 'value': {'selected_lines': []}}

预期行为是仅包含与 seller_id Many2one 字段相关的项目

产生的行为是检索所有项目

编辑:我注意到,当我删除 widget="section_and_note_one2many"时,域工作正常,但无法在同一表单中编辑 TreeView ,即使使用 editable="bottom"

最佳答案

您可以直接在域内使用供应商字段添加检查。

代码:

    @api.onchange('supplier_id')
def onchange_supplier(self):
domain = {'product_ids': []}
for rec in self:
if rec.supplier_id:
domain = {'product_ids': [('supplier_id', '=', rec.supplier_id.id)]}
return {'domain': domain}

更新:尝试按照 attribute_value_ids 上的 /addons/mrp/models/mrp_bom.py 中的方式实现此操作。 [版本:12]

关于python - Odoo:如何将动态域设置为many2many字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59740691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com