奥多:有一个2号场地不工作

2024-10-01 07:38:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在奥多遇到过一个20多个球场的奇怪行为。在

这是我的代码:

在模型.py公司名称:

class mrp_bom_inherit(models.Model): 
    _inherit = 'mrp.bom'
    producten_tussenmodel = fields.One2many(comodel_name='tussenmodel_wc_producten', inverse_name='bom_id', string="producten", copy=True)

class tussenmodel_wc_producten(models.Model):
    bom_id = fields.Integer()
    routing_id = fields.Integer()
    producten = fields.Char(string="Productnr.")

在视图.xml公司名称:

^{pr2}$

输出如下:

enter image description here

但它应该只显示“bbb”,因为“bbb”是数据库中唯一一条在tussenmodel_wc_producten表中路由_id=32的记录,而tussenmodel_wc_producten表中的bom_id等于中的id物料需求计划. 在

我通过一个SQL查询检查了这个:

select producten
from mrp_bom as m JOIN tussenmodel_wc_producten as t ON(m.id = t.bom_id) 
where t.routing_id = 32

只有“bbb”作为输出。在

我做错什么了?在

编辑:更多Ludwik Trammer的截图: enter image description hereenter image description here


Tags: name名称idfieldsmodelmodelsmrp公司
3条回答

首先需要更新模型中的关系,对于One2many关系,必须将Many2one字段作为反向字段名,这样odoo引擎才能正确解释它。在

class tussenmodel_wc_producten(models.Model):
    bom_id = fields.Many2one('mrp.bom','Bom')

也可以用这种方式更新你的域名

^{pr2}$

当用户编辑表单时,字段上的domain属性只控制哪些对象出现在可用对象列表中(即,可以为关系选择潜在的对象)。它不做任何比这更重要的事情,特别是它不控制哪些对象实际上在关系中。在

如果对象已经在与“aaa”、“bbb”、“ccc”和“ddd”的关系中,那么设置一个域不会改变它。在

一个可能的问题是,在one2many字段上,逆参数假定指向另一个表上的many21,即关系的逆,而在上面的代码中,tussenmodel_wc_producten中的bom_id是一个整数。在

你应该重新定义为

在字段。多个("物料需求计划“,”BOM Id“)

最后一件事:tussenmodel_wc_producten没有为模型定义一个名称。这是合法的,因为基本模型将默认为类。名称如果未定义_name,但通常定义_name或_inherit。考虑到在Odoo模型处理过程中_-name有多么重要,如果没有定义它,我不希望依赖于它按预期工作。在

相关问题 更多 >